ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:111.36KB ,
资源ID:16603739      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16603739.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(栈的共享数据结构Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

栈的共享数据结构Word下载.docx

1、datatype datamaxsize; int top2;sqstack; /定义一个结构体类型的 sqstacksqstack a,*s; / 定义一个结构体类型变量 a和指针变量 sssqstack *init(sqstack *s) / 初始化两个栈均为空, s是指向栈类型的指针s=(sqstack *)malloc(sizeof(sqstack); / 申请空间s-top0=-1; /top1 、top0 分别是第 0 和第 1 个栈的栈顶指针top1=maxsize; return s;int push(sqstack *s,datatype x,int k) / 入栈操作, s

2、是栈顶指针, x是要插入的数, k是栈号if(s-top0+1=s-top1)printf(n); 两个栈均满,不能进栈! n / 判断是否栈满return 0;if(k=0)topk+; / 改栈顶指针加 1或减 1 ,来选择不满的栈elsetopk-;datas-topk=x; /将X 插入当前栈顶return 1;int pop(sqstack *s,int k) / 出栈操作,栈顶元素由参数 x返回int x;if(k=0&top0=-1)|(k=1&top1=maxsize) 栈空 ,不能退栈! nn return 0;x=s-topk; /区栈顶元素给 X if(k=0) / 改栈

3、顶指针加 1 或减 1 ,来选择不满的栈else return x;void get(sqstack *s,int l) /元素输入函数, l来判断是否已经建栈int k=0,x;while(k=1|k=0)if(l=0) 栈还未建立! break; 请选择输入方向,正向 (0) ,方向 (1) ,结束 (2): / 选择要输入的栈号,并输入元素scanf(%d,&k); if(k=0|k=1)x=0; 请输入数据: while(x!=-1)x); if(x=-1)break;push(s,x,k);void check(sqstack *s) / 检测栈内的元素但并不输出int i,l=0;

4、 while(l=0|l=1) 请选择输出方向,正向 (0) ,方向 (1) ,结束 (2): scanf(l); if(l=2) break;else if(l=0&top0=-1)|(l=1& continue;else if(l=0) 正向数据为: for(i=0;itopl;i+)%4d,s-datai); printf(nn 反向数据为: for(i=maxsize-1;ii-)void print(sqstack *s) /元素输出函数int x,z=1,f=1,l=0; 请选择输出方向,正向 (0) ,方向 (1):x=pop(s,l); if(x=0) 选择 1继续 ,0 结束

5、输出: if(l=1) continue; else break; 正向第 %d 个: %dn,z,x); z+; 反向第 %d 个:,f,x); f+;void menu() / 菜单函数 栈的共享实验 n );=n 1. 栈 的 建 立 n 2. 栈的共享输入 n 3. 栈单个的输出 n 4. 栈的检测 n 0. 退 出 实 验 nvoid main() / 主函数int h,k,l=0; /定义 l为标志,判断是否已建栈,如未建立 l=0 ,否则l=1char i; sqstack *s; for(;)menu(); 请选择 0-4 :h); if(h4)n 输 人 错 误 !Enter

6、 y to contunie :%si);system(clselse switch(h)case 1:*n* 栈的建立 *ns=init(s); /栈的建立 l=1;case 2:*n* 栈的共享输入 *n*nget(s,l); / 栈的输入case 3:* 栈单个的输出 * n*nprint(s); / 栈的单个输出printf(case 4:* 栈的检测 * ncheck(s); /对栈内元素的检测printf(case 0: system(* 再 见! *n五、运算结果结果一: 0 号栈输入元素( 1 ,2, 3, 4 , 7, 8, 10), 1 号栈输入元素( 0,5 , 6 )栈

7、的共享实验Enter y to continue : y (回车)* 栈 的 共 享 输 入 *请选择输入方向,正向 (0) ,方向请输入数据: 1 2 3 4 7 8 10 1(1) ,结束 (2): 0(回车) 1 0 5 6 1 (回车) 2 y* 栈 的 检 测 *正向数据为: 1 2 3 4 7 8 10反向数据为: 0 5 6* 栈 的 单 个 输 出 *请选择输出方向,正向 (0) ,方向 (1): 0 (回车)正向第 1 个: 10正向第 2 个: 8正向第 3 个: 17正向第 4 个: 4正向第 5 个: 3正向第 6 个:正向第 7 个:栈空,不能退栈!选择 继续, 1

8、(回车)反向第 1 个: 6反向第 2 个: 5反向第 3 个:栈的共享实验1. 栈的建立2. 栈的共享输入3. 栈单个的输出4. 栈的检测0.退出实 验请选择0-4 : 2 (回车)0. 退 出 实 验请 选 择 0-4 :请选择输入方向,正向 (0) ,方向 (1) ,结束 (2): 1 2 3 4 5 6 7 8 9 10 11 1 (回车) 两栈均满,不能进栈!六、调试小结函数 init (sqstack *s) 中少了一条 s=(sqstack *)malloc(sizeof(sqstack) 语句, 这就导致了栈的内存空间无法分配,所以执行出错。在程序中多加了 get (sqstack *s,int l) 、check (sqstack *s) 、print (sqstack *s) 三个函数以便与栈的输入输出以及对栈的检测(不出栈) 。为了在栈的输入之前判断是否已经建栈,在主函数中定义了一个 l 并定义为 0,当 l = 0时表示还未建栈, l = 1 时表示已经建栈。所以只要将 l 的值传入 get (sqstack *s,int l) 函数中就可以判断在此之前是否已经建栈。七、疑问对标志 l 的赋值只能放在建栈函数 s=init(s) 之后,而不能放在它的前面。如下: s=init(s); 正确 错误! l 的值任然为 0,不赋值为 1 printf(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1