《数据结构》实验指导书(C语言版)(5)
*e=S.base[--S.top];
return S; }
void Stack_display(Sqstack S) /*顺序栈的输出函数*/ { int i;
for(i=0; i { Sqstack S; int i,j,n,x,e; printf(\请求输入顺序栈中元素个数*/ scanf(\ printf(\请求输入顺序栈中各个元素值*/ for(i=0;i scanf(\ S.top=n; printf(\ Stack_display(S); printf(\请求输入需要入栈的新元素*/ scanf(\ S=Push(S,x); printf(\提示输出入栈后栈中各个元素值*/ Stack_display(S); /*调用顺序栈的输出函数*/ S=Pop(S,&e); printf(\输出出栈元素的值*/ printf(\提示输出出栈后栈中各个元素值*/ Stack_display(S); /*调用顺序栈的输出函数*/ } 4.运行结果参考如图3-1所示: 21 图3-1:验证性实验运行结果 七、设计性实验(以下两个设计题目学生可根据自己的掌握程度或兴趣自行选择完成) 1.编程实现链栈的入栈和出栈操作。 ⑴ 实验要求 (1)根据输入的栈中元素个数和各元素值建立一个链栈,并输出链栈中各元素值, 观察输入的内容与输出的内容是否一致,特别注意栈顶元素的位置。 (2)将数据元素x入栈,并输出入栈后的链栈中各元素值。 (3)将链栈中的栈顶元素出栈,并输入出栈元素的值和出栈后链栈中各元素值。 ⑵ 核心算法提示 采用链式存储结构的栈称为链栈,链栈的存储结构描述如下: typedef struct Snode { Selemtype data;/*数据域*/ struct Snode *next;/*指针域*/ }SNODE,* LinkStack;/*其中SNODE为链栈中的结点类型名, LinkStack为指向结点的指针类型名*/ 如果栈中元素序列为{a1,a2,?,an},则链栈的存储结构如下图3-1所示: 图3-2: 链栈的存储结构示意图 top an an-1 an-2 … a1 ^ 从图3-1可看出,栈的链式存储结构与单链表的存储结构相同,所有在链栈上进行入栈和出栈操作与单链表上的插入和删除操作的主要步骤相同。只不过要特别注意以下几点: (1)链栈中无需加头结点。 (2)链栈中的指针是指向栈中元素序列的前驱结点。 (3)链栈中的入栈和出栈操作都是在链表的表头进行。 ⑶ 核心算法描述 status Push(LinkStack &top,int e) /*将数据元素e压入到链栈top中,使其成为新的栈项元素*/ { LinkStack p; p=(LinkStack)malloc(sizeof(SNODE)); /*生成一个新的结点*/ if (!p) /*如果分配空间失败,则函数返回\ return OVERFLOW; p->data=e; /*新结点的数据域赋值*/ p->next=top; /*修改链使新结点插入到链表的头部,并成为新的栈顶元素*/ top=p; return OK; } status Pop(LinkStack &top,int &e) /*将链栈top中的栈顶元素从栈中删除,并用e返回其值*/ 22 { LinkStack q; if (!top) /*如果栈空,则函数返回ERROR*/ return ERROR; e=top->data; /*将被删的栈顶元素的值保存在e中*/ q=top; /*用q记下待删的栈顶元素*/ top=q->next; /*修改链使待删结点从链中“卸下”,此时被删结点的后继成为新的栈顶元素结点*/ free(q); /*释放被删结点的存储空间*/ return OK; } 2.编程实现汉诺(Hanoi)塔求解问题。 ⑴ 实验要求 假设有三个命名为X、Y和Z的塔座,在塔座X上插有n个直径大小各不相同且从小到大编号为1,2,??,n的圆盘。现要求将塔座X上的n个圆盘借助于塔座Y移至塔座Z上,并仍按同样顺序叠排。圆盘移动时必须遵循下列规则: ① 每次只能移动一个圆盘; ② 圆盘可以插在X、Y和Z中的任何一个塔座上; ③ 任何时刻都不能将一个较大的圆盘压在较小的圆盘上。 ⑵ 核心算法提示 当n=1时,问题比较简单,只要将编号为1圆盘从塔座X直接移动到塔座Z上即可;当n>1时,若能将压在编号为n的圆盘上的n-1个圆盘从塔座X借助于塔座Z移至塔座Y上,则可先将编号为n的圆盘从塔座X移至塔座Z上,再将塔座Y上的n-1个圆盘借助于塔座X移至塔座Z上。而将n-1个圆盘从一个塔座借助于另一个塔座而移至到第三个塔座上是一个与原问题具有相同特征属性的问题,只是问题规模小1,因此可以用解决原问题的方法来解决。 23 实验B04: 队列的操作实验 一、实验名称和性质 所属课程 实验名称 实验学时 实验性质 必做/选做 数据结构 队列的操作 2 □验证 □综合 √设计 √必做 □选做 二、实验目的 1.掌握队列存储结构的表示和实现方法。 2.掌握队列的入队和出队等基本操作的算法实现。 3.了解队列在解决实际问题中的简单应用。 三、实验内容 1.建立顺序循环队列,并在顺序循环队列上实现入队、出队基本操作(验证性内容)。 2.建立循环链队列,并在循环链队列上实现入队、出队基本操作(设计性内容)。 3.实现键盘输入循环缓冲区问题(应用性设计内容)。 四、实验的软硬件环境要求 硬件环境要求: PC机(单机) Windows环境下的TurboC2.0以上或VC++ 使用的软件名称、版本号以及模块: 五、知识准备 前期要求熟练掌握了C语言的编程规则、方法和顺序循环队列、循环链队列的基本操作算法。 六、验证性实验 1.实验要求 编程实现如下功能: (1)根据输入的队列长度n和各元素值建立一个循环顺序表表示的队列(循环队列),并输出队列中各元素值。 (2)将数据元素e入队,并输出入队后的队列中各元素值。 (3)将循环队列的队首元素出队,并输出出队元素的值和出队后队列中各元素值。 2. 实验相关原理: 队列是一种插入操作限制在表尾,而删除操作限制在表头进行的特殊线性表,它的操作具有“先进先出”的特性。采用顺序存储结构的队列称为顺序队列,顺序队列的存储结构描述如下: #define MAXQSIZE 100/*顺序循环队列的最大长度*/ typedef struct { Qelemtype base[MAXQSIZE]; /*存放队列元素的数组空间*/ int front; /*头指针,若队列不空,则指向队列头元素*/ 24 int rear; /*尾指针,若队列不空,则指向队列尾元素的下一个存储单元*/ }Sqqueue; 【核心算法提示】 1.顺序循环队列入队操作的基本步骤:首先判断队列是否为满,如果队列满,则函数返回ERROR,否则将待入队的数据元素e存放在尾指针rear所指示的存储单元中,再使尾指针沿着顺序循环存储空间后移一个位置,最后函数返回OK。 2.顺序循环队列出队操作的基本步骤:首先判断队列是否为空,如果队列空,则函数返回ERROR,否则将头指针所指示的队首元素用e返回其值,再使头指针沿着顺序循环存储空间后移一个位置,最后函数返回OK。 【核心算法描述】 status enqueue(Sqqueue &Q,Qelemtype e) /*在循环队列Q中,插入新元素使其成为队尾元素*/ { if ((Q.rear+1)%MAXQSIZE==Q.front) return ERROR; /*若队列满
…… 此处隐藏:2061字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [资格考试]机械振动与噪声学部分答案
- [资格考试]空调工程课后思考题部分整合版
- [资格考试]电信登高模拟试题
- [资格考试]2018年上海市徐汇区中考物理二模试卷(
- [资格考试]坐标转换及方里网的相关问题(椭球体、
- [资格考试]语文教研组活动记录表
- [资格考试]广东省2006年高应变考试试题
- [资格考试]LTE学习总结—后台操作-数据配置步骤很
- [资格考试]北京市医疗美容主诊医师和外籍整形外科
- [资格考试]中学生广播稿400字3篇
- [资格考试]CL800双模站点CDMA主分集RSSI差异过大
- [资格考试]泵与泵站考试复习题
- [资格考试]4个万能和弦搞定尤克里里即兴弹唱(入
- [资格考试]咽喉与经络的关系
- [资格考试]《云南省国家通用语言文字条例》学习心
- [资格考试]标准化第三范式
- [资格考试]GB-50016-2014-建筑设计防火规范2018修
- [资格考试]五年级上册品社复习资料(第二单元)
- [资格考试]2.对XX公司领导班子和班子成员意见建议
- [资格考试]关于市区违法建设情况的调研报告
- 二0一五年下半年经营管理目标考核方案
- 2014年春八年级英语下第三次月考
- 北师大版语文二年级上册第十五单元《松
- 2016国网江苏省电力公司招聘高校毕业生
- 多渠道促家长督导家长共育和谐 - 图文
- 2018 - 2019学年高中数学第2章圆锥曲线
- 竞争比合作更重要( - 辩论准备稿)课
- “案例积淀式”校本研训的实践与探索
- 新闻必须客观vs新闻不必客观一辩稿
- 福师大作业 比较视野下的外国文学
- 新编大学英语第二册1-7单元课文翻译及
- 年产13万吨天然气蛋白项目可行性研究报
- 河南省洛阳市2018届高三第二次统一考试
- 地下车库建筑设计探讨
- 南京大学应用学科教授研究方向汇编
- 2018年八年级物理全册 第6章 第4节 来
- 毕业论文-浅析余华小说的悲悯性 - 以《
- 2019年整理乡镇城乡环境综合治理工作总
- 广西民族大学留学生招生简章越南语版本
- 故宫旧称紫禁城简介




