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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验三 栈和队列.docx

1、实验三 栈和队列数据结构与算法实验指导与报告书 _学年 第_ 学期专 业: _学 号: _姓 名: _实验地点:_指导教师:_计算机科学与工程学院2015实验三 栈和队列【实验目的】1、掌握栈的结构特性及其入栈,出栈操作;2、掌握队列的结构特性及其入队、出队的操作,掌握循环队列的特点及其操作。3、理解掌握递归调用程序设计思想。【实验学时】4学时【实验预习】回答以下问题:1、栈的顺序存储表示2、单链队列的存储表示 3、循环队列的顺序存储表示【实验内容和要求】1、按照要求完成程序exp3_1.c,实现顺序栈的相关操作。以下具有返回值的函数,若操作完成,返回OK,操作失败返回ERROR。函数需返回的

2、其他数据,使用函数参数返回。调试及测试数据并给出结果: 初始化栈; 连续进栈3 ,5,7,9,13; 获取当前栈顶元素; 返回当前栈长度; 判断当前栈是否为空; 栈内元素依次出栈; 判断当前栈是否为空; 清空栈; 利用栈实现数制转换,测试整数8和255; 判断表达式括号是否匹配,测试以下三个表达式:表达式1:1*(2+3)/4;表达式2:(3+4)*7-(8-9);表达式3:(1+2)*(3+4)-(5+6)*3)exp3_1.c部分代码如下:#include#include#include#define ERROR 0#define OK 1#define STACK_INT_SIZE 10

3、 /*存储空间初始分配量*/#define STACKINCREMENT 5 /*存储空间分配增量*/typedef int ElemType; /*定义元素的类型*/*(1)-补充栈的顺序存储分配表示,采用定长和可变长度存储均可*/int InitStack(SqStack *S); /*构造空栈*/int Push(SqStack *S,ElemType e); /*入栈*/int Pop(SqStack *S,ElemType *e); /*出栈*/int GetTop(SqStack *S,ElemType *e); /*获取栈顶元素*/int ClearStack(SqStack *

4、S); /*清空栈*/int StackEmpty(SqStack *S); /*判断栈是否为空*/int StackLength(SqStack *S); /*求栈的长度*/void conversion(); /*十进制转换为二进制*/void Correct(); /*判断表达式括号是否匹配*/*(2)-初始化栈函数*/int InitStack(SqStack *S) /*InitStack*/*(3)-入栈函数*/int Push(SqStack *S,ElemType e) /*Push*/*(4)-出栈函数*/int Pop(SqStack *S,ElemType *e)/*Po

5、p*/*(5)-返回栈顶元素函数*/int GetTop(SqStack *S,ElemType *e) /*GetTop*/*(6)-清空栈函数*/int ClearStack(SqStack *S) /*ClearStack*/*(8)-判断栈是否为空函数*/int StackEmpty(SqStack *S)/*StackEmpty*/*(9)-返回栈的长度函数*/int StackLength(SqStack *S) /*StackLength*/*(10)-十进制整数转换为二进制并输出函数*/void Conversion() /*Conversion*/*(11)-判断表达式括弧是

6、否匹配(假设只有一种小括弧)函数*/void Correct() /*Correct*/*定义菜单字符串数组*/int menu_select() char *menu= n*MENU*n, 1. Init Satckn, /*初始化顺序栈*/ 2. Push Elementn, /*入栈*/ 3. Get TopElementn, /*获得栈顶元素*/ 4. Return StackLengthn, /*返回栈的长度*/ 5. Stack IsEmptyn, /*判断是否栈空*/ 6. Pop Elementn, /*出栈*/ 7. Clear Stackn, /*清空栈*/ 8. Conv

7、ersionn, /*利用栈进行数制转换*/ 9. Correctn, /*利用栈进行括号匹配*/ 0. Quitn, /*退出*/ n*MENU*n ; char s3; /*以字符形式保存选择号*/ int c,i; /*定义整形变量*/ for (i=0; i11; i+) /*输出主菜单数组*/ printf(%s,menui); do printf(nEnter you choice(09):); /*在菜单窗口外显示提示信息*/ scanf(%s,s); /*输入选择项*/ c=atoi(s); /*将输入的字符串转化为整形数*/ while (c9); /*选择项不在09之间重输

8、*/ return c; /*返回选择项,主程序根据该数调用相应的函数*/int main() SqStack ss; int e; InitStack(&ss); for (;) switch (menu_select() case 1: printf(n1-Init Satck:n); if(InitStack(&ss) printf(Init OK!n); else printf(Init ERROR!n); break; case 2: printf(n2-Push Element:n); printf(input data(Terminated by inputing a chara

9、cter):); while(scanf(%d,&e)=1) if(Push(&ss,e) printf(Push %d OK!n,e); else printf(Push %d ERROR!n,e); printf(input data:(Terminated by inputing a character); getchar(); break; case 3: printf(n3-Get TopElement:n); if(GetTop(&ss,&e) printf(Top is %d,e); else printf(Stack is Empty!); break; case 4: pri

10、ntf(n4-Return StackLength:n); printf(StackLength is %d,StackLength(&ss); break; case 5: printf(n5-Stack IsEmpty:n); if(StackEmpty(&ss) printf(Stack is Empty!); else printf(Stack is not Empty!); break; case 6: printf(n6-Pop Element:n); if(StackEmpty(&ss) printf(Stack is Empty!); else printf(All eleme

11、nts of Stack :); while(Pop(&ss,&e) printf(%d ,e); break; case 7: printf(n7-ClearStack:n); ClearStack(&ss); printf(ClearStack OK!); break; case 8: printf(n8-Conversion:n); Conversion(); break; case 9: printf(n9-Correct:n); getchar(); Correct(); break; case 0: exit(0); return 0;2、按照要求完成程序exp3_2.c,实现循环

12、队列的相关操作。以下具有返回值的函数,若操作完成,返回OK,操作失败返回ERROR。函数需返回的其他数据,使用函数参数返回。调试及测试数据并给出结果: 初始化队列; 返回当前队列长度; 连续入队2,4,6,8,10; 获取当前队头元素; 返回当前队列长度; 判断当前队列是否为空; 队列元素依次出队; 判断当前队列是否为空;exp3_2.c部分代码如下:#include#include#define ERROR 0#define OK 1#define MAXQSIZE 100typedef int QElemType; /*定义元素的类型*/*(1)-循环队列顺序存储表示*/typedef struct SqQueue;/*(2)-构造一个空循环队列*/int InitQueue(SqQueue *Q) /*InitQueue*/*(3)-返回循环队列的长度*/int QueueLength(SqQueue *Q) /*QueueLentgh*/*(4)-入队操作*/int EnQueue(SqQueue *Q,QElemType e) /*EnQuese*/*(5)-出队操作*/int

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

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