电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

实验三_共享栈操作_09082229刘增鹏

实验三_共享栈操作_09082229刘增鹏_第1页
1/7
实验三_共享栈操作_09082229刘增鹏_第2页
2/7
实验三_共享栈操作_09082229刘增鹏_第3页
3/7
实验3 栈操作 一、 实验的目的要求 1、 了解顺序栈的特性,以及它们在实际问题中的应用。 2、 掌握栈表的实现方法,以及它们的基本操作。 二、 题目、栈操作 1、设两个顺序栈共享空间,试写出两个栈公用的栈操作算法PuSh(x,k)和 POP(k),其中k 为0 或1,用以指示栈号。编写一个完整的程序实现。 2、设一批数据有正有负,试用栈对它们进行调整,使输出时所有负数都在正数之前。编写一个完整的程序实现。 三、 算法描述 实现共享栈:线性表(a0,a1,…,an)是一种逻辑结构,若在计算机中对它采用顺序栈存储结构来存储,则就是栈表。两个栈表共享一段内存空间图示如下: 0 maxsize-1 2 4 3 1 Top[0] top[1] 在数据结构中用C 语言来描述,可以利用数组表示顺序表。将两个原表A 和B 存放在一个数组的存储空间(a0,a1,a2,…,amaxsize-1)中,实现方法是:设置两个栈顶指针变量 top[0]和top[1],开始时top[0]=-1 和top[1]=maxsize 表示两个栈均为空,然后根据变量 k 是 0 还是 1,分别进行入栈和出栈操作。 调整数据正负:当数据为负时直接输出,若为止则进栈。当输入数据处理完后,栈内都为正数,将其依次出栈输出即可。 四、 程序清单 #include #include #include #define maxsize 50 typedef struct //栈的类型定义 { int data[maxsize]; int top[2]; }sqstack; int empty_in(sqstack *S) //输入时判断满栈 { if(S->top[0]+1==S->top[1]) { printf("两个栈均满,不能输入!\n"); return 0;} if((S->top[0]==-1)&&(S->top[1]==maxsize)) { printf("两个栈均为空,能够输入数据!\n"); return 1; } if((S->top[0]!=-1)&&(S->top[1]==maxsize)&&(S->top[0]+1!=S->top[1])) { printf("可以向栈内输入元素!\n"); return 1; } if((S->top[0]==-1)&&(S->top[1]!=maxsize)&&(S->top[0]+1!=S->top[1])) { printf("可以向栈内输入元素!\n"); return 1; } if((S->top[0]+1)!=(S->top[1])) { printf("可以向栈内输入元素!\n"); return 1; } } int empty(sqstack *S) //判断空栈 { int a=1,b=2,c=3,d=4; if((S->top[0]==-1)&&(S->top[1]==maxsize)) { printf("两个栈均为空!\n"); return a; } if(S->top[0]==-1) { printf(" 零号栈为空!\n"); return b; } if(S->top[1]==maxsize) { printf("一号栈为空!\...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

实验三_共享栈操作_09082229刘增鹏

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部