2022年山东大学数据结构第二次实验实验报告.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年山东大学数据结构第二次实验实验报告.pdf》由会员分享,可在线阅读,更多相关《2022年山东大学数据结构第二次实验实验报告.pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验 2 ADT栈与队列的编程与实现实验目的 :加深对抽象数据类型ADT栈和队列的理解;实验原理 :参照课本p.64-66 ,及 Figure3.39-3.44;课本 p.82-83 ,及 Figure3.57-3.60. 实验内容 :编写程序实现ADT栈的定义,及常用操作(数组或指针实现):1)生成栈;2)Push 3)Pop 编写程序实现ADT队列的定义,及常用操作:1)生成队列;2)Enqueues 入列;3)Isempty 判断是否队列为空。实验要求 :1)实现 ADT栈的结构及操作;2)实现 ADT队列的结构及操作,并给出应用。1.栈(链表实现)实验源程序:#include stda
2、fx.h #include stdio.h #include stdlib.h #include malloc.h #include string.h typedef struct node /定义一个栈的结构 int data; struct node *pNext; /pNext 为指向栈中下一个空间的指针Node,*pNode; typedef pNode Stack; Stack InitStack() ; /初始化栈void CreateStack(Stack Top); /生成栈bool Empty(Stack Top); /判断栈是否为空void Push(Stack Top,i
3、nt n); /进行压栈操作void Pop(Stack Top); /进行出栈操作void TraverseStack(Stack Top); /遍历栈的函数void DeleteStack(Stack Top); /清空栈的函数int main() /主函数 int n; char str6; /定义数组,存储操作指令Stack Top=NULL; /初始化 Top 为 NULL精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 13 页 - - - - - - - - - - Top=Ini
4、tStack(); /初始化栈CreateStack(Top); /生成栈TraverseStack(Top); /遍历栈printf( 请输入下一步操作指令(push,pop or end):); while(1) scanf(%s,str); /获取操作指令if(strcmp(str,push)=0) printf( 请输入入栈的元素:); scanf(%d,&n); Push(Top,n); /进栈操作TraverseStack(Top); printf( 请输入下一步操作指令(push,pop or end):); if(strcmp(str,pop)=0) Pop(Top); /出栈
5、操作TraverseStack(Top); printf( 请输入下一步操作指令(push,pop or end):); if(strcmp(str,end)=0) break; /跳出循环if(strcmp(str,push)!=0&strcmp(str,pop)!=0&strcmp(str,end)!=0) printf( 输入指令错误,请重新输入指令:); DeleteStack(Top); /释放栈空间return 0; Stack InitStack() /进行栈的初始化的函数 Stack Top = (Stack)malloc(sizeof(Node); /分配内存空间给栈顶if(
6、Top=NULL) printf( 动态分配内存失败n); exit(1); printf( 初始化栈成功 n); Top-pNext = NULL; /栈顶指针的指向置为NULL ;return Top; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 13 页 - - - - - - - - - - void CreateStack(Stack Top) /生成栈 int LEN,x; Stack Bottom = Top; /令 Top 和 Bottom 指向同一空间Bottom-pNe
7、xt = NULL; printf( 请输入想要入栈的元素个数:); scanf(%d,&LEN); for(int i = 0; i data = x; /将输入的数放在栈data 单元中Bottom-pNext = pNew; /Bottom 指向新分配空间的单元pNew-pNext = NULL; /令 pNew 指向 NULL Bottom = pNew; /让新分配空间的单元成为栈底 printf( 生成栈成功 n); bool IsEmpty(Stack Top) / 判断栈是否为空 return Top-pNext=NULL; void Push(Stack Top,int n)
8、 /进行进栈操作的函数 Stack pNew = (Stack)malloc(sizeof(Node); /定义一个新节点,并分配内存空间if(pNew=NULL) printf( 未能动态分配内存,进栈失败n); return ; pNew-data = n; pNew-pNext = Top-pNext; Top-pNext = pNew; void Pop(Stack Top) /进行出栈操作函数 Stack p=Top-pNext; if (IsEmpty(Top)=true) /判断栈是否为空,为空就不能进行出栈操作 精品资料 - - - 欢迎下载 - - - - - - - - -
9、 - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 13 页 - - - - - - - - - - printf( 栈为空, Pop 失败 n); return ; else printf( 弹出的栈顶元素为:); printf(%d n,p-data); /显示出栈元素Top-pNext=p-pNext; free(p); void TraverseStack(Stack Top) /遍历栈,获取栈中的数值 printf( 现在栈中的元素从栈顶到栈底依次为:); Stack p = Top-pNext; if(p=NULL)printf(栈空 ); whil
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 山东大学 数据结构 第二次 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内