预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

上机题目 顺序栈的建立及基本操作实现,要求建立一个顺序栈,并且执行初始化、入栈、出栈、栈的清空、栈中元素计数等功能。 需求分析 本次程序设计要求建立一个顺序栈,并且执行初始化、入栈、出栈、栈的清空、栈中元素计数等功能。 输入形式为从键盘输入,用户根据界面的提示从键盘直接输入所对应的数即可。输入的值为正数或字符,用户输入其他的数据会产生错误。 系统按照用户输入的数据类型,将会把相应的输出结果显示到界面上。 测试:按照提示建立一个单链表,按照提示进行初始化、入栈、出栈、栈的清空、栈中元素计数等操作测试程序是否正确。 概要设计 数据结构定义: #include"stdio.h" #include"stdlib.h" #defineSTACK_INIT_SIZE10//存储空间初始分配量 #defineSTACKINCREMENT2//存储空间分配增量 #defineOVERFLOW-2 #defineOK1 #defineERROR0 typedefintStatus; typedefcharSElemType;//定义栈元素类型 (2)画出各模块之间的调用关系图。 Main()() Int() StatusListInsert() voidListEmpt()y SearchList()GHhh() Listlength() StatusListDelete() 用伪码给出主程序的主要处理过程。 详细设计 InitStack(&S)构造一个空栈。 Push(&S,e)插入元素为e的新栈顶。 Pop(&s,&e)删除栈顶元素用e返回 ClearStack(&s)清空栈 StackEmpty(s)栈是否为空 GetTop(s,&e)用e返回s的栈顶元素 StackLength(&s)计算栈长度 主要伪代码: 插入元素为e的新栈顶。 StatusPush(SqStack&S){ if(S.top-S.base>=S.stacksize){ S.base=(SElemType*)realloc(S.base, (S.stacksize+=STACKINCREMENT)*sizeof(SElemType)); if(!S.base)exit(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; returnOK; } 删除栈顶元素用e返回 StatusPop(SqStack&S,SElemType&e){ if(S.top==S.base)returnERROR; S.top--; e=*S.top; returnOK; }/ 检验栈是否为空 StatusStackEmpty(SqStack&S){ if(S.top==S.base)printf("栈为空"); else printf("栈不为空"); returnOK; } 用e返回s的栈顶元素 StatusGetTop(SqStack&S,SElemType&e){ if(S.top==S.base)returnERROR; p--; e=*p; returnOK; } 栈的长度 StatusStackLength(SqStack&S){ if(S.base==NULL)returnERROR; else returnOK; } 清空栈 StatusClearStack(SqStack&S){ if(S.base=NULL)returnERROR; else S.top=S.base; returnOK; } 调试分析 在调试的时候初期的时候,我们解决了一些常见的错误,一些失误引起的语法错误,但是我也看到了我的程序的很多不足之处,例如:因为程序比较长,运行时如果没有表达清楚,很难进行操作,我在编程时没有明确提示,这样用起来我们自己都觉得别扭。在老师的指导下,我在程序中添加了printf(“输入、、、”);等语句,这样看的时候就一目了然,很方便。由于时第一次进行数据结构上机实验,把算法和C语言编程结合起来有点困难,总是把C语言编程的方法用在数据结构中,于是造成程序十分复杂,并且存在很多错误,在网上找了很多关于数据结构的算法编程才明白了一些,就是用C语言的方法把算法表示出来,只要熟记一些代码,多进行一些练习就显得比较简单了。 使用说明 1建立顺序栈:先输入顺序栈的元素个数,按ENTER键,输入第一个元素后,再按ENTER键换行输入第二个元素,同样操作进行下面。 2选项2是测试顺序栈是否为空。 3输入3选项是计算栈长度。 4选项4是读出栈顶元素。 5选