好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

6826编号北京信息科技大学 数据结构 实验二链栈、循环队列和计算器的操作.pdf

14页
  • 卖家[上传人]:玩***
  • 文档编号:143876375
  • 上传时间:2020-09-02
  • 文档格式:PDF
  • 文档大小:225.47KB
  • / 14 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 实实验验报报告告 课程名称课程名称数据结构 实验项目实验项目链栈、循环队列和计算器的操作 实验实验仪器仪器计算机 系系别别计算机学院学院 专专业业 班级班级/ /学号学号 学生姓名学生姓名 实验日期实验日期 成成绩绩 指导教师指导教师 一 、实验目的 (1)熟悉链栈的操作方法 (2)熟悉循环队列的操作方法 (3)利用栈的特点来编写简易计算器 (4)了解各自的优缺点 二、 实验内容 (1)用链栈实现数据的增、删、查功能 (2)用循环队列实现数据的增、删、查等功能 (3)用栈的知识来编写简易计算器 三、实验课时 4 课时 四、实验步骤 1. 仔细分析并理解数据结构这本书上提供的部分程序伪代码 2. 根据所给的代码编写出主函数和一些需要用到的函数 3. 将伪代码翻译为程序能用的代码 4充分理解每段代码的含义以及它所起到的作用 5. 编译调试,纠正错误并分析出错的原因 6. 运行并测试 五、程序源代码 1.链栈: #include #include typedef struct SNode int data; struct SNode *next; SNode,*Stack; typedef struct Stack top; int length; SqStack;//定义链式栈的结构体 int InitStack(SqStack S.length=0; return 0; //初始化链式栈 int Push(SqStack p=(Stack)malloc(sizeof(SNode)); if(!p)exit(0); p-data=e; p-next=S.top; S.top=p; S.length++; return 0; //插入元素 e int Pop(SqStack else Stack q; q=S.top; S.top=S.top-next; --S.length; free(q); return 0; //删除栈顶元素 e int GetTop(SqStack else printf(返回栈顶元素%5dn,S.top-data); return 0; //返回栈顶元素 int PrintStack(SqStack printf(n 链式队列中的元素); p=S.top; if(S.top!=NULL) while(p!=NULL) printf(%5d,p-data); p=p-next; else printf(队列为空n); printf(n); return 0; //遍历链式栈 int ClearStack(SqStack printf(已置空链式栈); printf(n); return 0; //置空链式栈 void main() SqStack S; int e,m; InitStack(S); for(;;) printf(1.插入元素;2.删除元素;3.栈顶元素;4.结束运行 nn); printf(选择:); scanf(%d, printf(n); switch(m) case1:printf(插入元素: );scanf(%d,Push(S,e);PrintStack(S);printf(n);break; case 2 : Pop(S);PrintStack(S);printf(n);break; case 3 : GetTop(S);printf(n);break; case 4 : ClearStack(S);printf(n);break; default : printf(输入指令有误!);break; 2.循环队列: #include #include #define MAXQSIZE 100 //最大队列长度 #define OK 1 #define OVERFLOW -2 #define ERROR 0 typedef int QElemType; typedef int Status; typedef struct QElemType * base;//初始化的动态分配存储空间 int front;//头指针,若队列不空,指向队列头元素 int rear;//尾指针,若队列不空,指向队列尾元素的下一 个的位置 SqQueue; Status InitQueue (SqQueue if(!Q.base) exit (OVERFLOW);//存储分配失败 Q.front=Q.rear=0; return OK; int QueueLength (SqQueue x=(Q.rear-Q.front+MAXQSIZE) % MAXQSIZE; printf(该队列长为:%d,x); return 0; Status EnQueue (SqQueue if((Q.rear+1) % MAXQSIZE == Q.front ) return ERROR;//队列满 if(e==0) printf(请输入要插入的值:); scanf(%d, Q.baseQ.rear=y; Q.rear=(Q.rear + 1) % MAXQSIZE; else Q.baseQ.rear=e; Q.rear=(Q.rear + 1) % MAXQSIZE; return OK; Status DeQueue (SqQueue e=Q.baseQ.front; Q.front=(Q.front + 1) % MAXQSIZE; return OK; int Put(SqQueue i

      2.在实际操作中,会出现很多问题,从这些问题中会反映出一大堆自己本身所存 在的不足,让我认识到自己在编程中会经常出现的错误,下定决心在以后中不犯 这种在别人看来是低。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.