[栈及队列的操作]数据结构实验报告C语言源码.doc_第1页
[栈及队列的操作]数据结构实验报告C语言源码.doc_第2页
[栈及队列的操作]数据结构实验报告C语言源码.doc_第3页
[栈及队列的操作]数据结构实验报告C语言源码.doc_第4页
[栈及队列的操作]数据结构实验报告C语言源码.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程名称 数据结构 实验项目名称 栈和队列 (一)实验目的和要求;熟练掌握栈及队列基本操作的实现(二)实验主要内容;(1) 建立栈并进行元素(8,9,5,4)入栈,实现链栈的建立及入栈的基本操作;(2) 实现元素(9,5)的出栈,实现链栈的出栈的操作;(3) 建立链队列,并实现元素(4,5,7,6,8)入队,实现链队列的建立,和入队的基本操作;(4) 实现元素(4,5,7,6,8)出队,实现链队列的出队的基本操作(三)主要仪器设备计算机,VC+高级程序语言(四)实验原理栈的修改时按照先进后出的原则进行的,试验中用到构造空栈,及入栈出栈操作。队列是一种先进先出的线性表,只允许在表的一端插入,而在另一端删除元素,试验中构造队并且入队出队。(五)实验步骤及调试分析;根据课本基本操作写好源程序,基本操作在书本中已经给出,写出主函数,调试分析程序,找出错误,并修改后程序能够运行并得出正确输出。试验中,有些小错误经常犯,比如符号,函数声明等。(六)实验结果及分析;实验结果如下:能够按照实验要求得出正确结果(七)附录:源程序#include#include#define OK 1#define ERROR 0#define OVERFLOW -2typedef int elemtype;typedef int status;typedef struct QNode elemtype data; struct QNode *next;QNode,*QueuePtr;typedef struct QueuePtr front; QueuePtr rear;LinkQueue;typedef struct lnode elemtype data; struct lnode *next;stacknode, *linkstack;status initstack(linkstack top) top-next = NULL;status isempty(linkstack top) if(top-next = NULL) return OK; return ERROR;status push(linkstack top, elemtype e) stacknode *p; p= (stacknode *)malloc(sizeof(stacknode); if(p = NULL) return ERROR; p-data = e; p-next = top-next; top-next = p; return OK;status pop(linkstack top, elemtype *e) if(isempty(top) return ERROR; stacknode *p = top-next; *e = p-data; top-next = p-next; free(p); return OK;status shstack(linkstack top)stacknode *p; p= (stacknode *)malloc(sizeof(stacknode); p-next=top-next; while(p-next!=NULL)printf(%d ,p-next-data);p-next=p-next-next;return OK;status initqueue(LinkQueue *q)(*q).front=(*q).rear=(QueuePtr)malloc(sizeof(QNode);if (!(*q).front) exit(OVERFLOW);(*q).front-next=NULL;return OK;status enqueue(LinkQueue *q,elemtype e)QueuePtr p=(QueuePtr)malloc(sizeof(QNode);if(!p) exit(OVERFLOW);p-data=e;p-next=NULL;(*q).rear-next=p;(*q).rear=p;return OK;status dequeue(LinkQueue *q,elemtype *e)if(*q).front=(*q).rear) return ERROR;QueuePtr p;p=(*q).front-next;*e=p-data;/注意 (*q).front-next=p-next;if(*q).rear=p) (*q).rear=(*q).front;free(p);return OK;void main()linkstack s;s=(linkstack)malloc(sizeof(stacknode);initstack(s);printf(进入栈的4个元素依次为:n);for (int i=0;i4;i+)elemtype a;scanf(%d,&a);push(s,a);printf(n栈顶到栈底的元素依次为;n);shstack(s);elemtype b,c,d;pop(s,&b);pop(s,&c);pop(s,&d);push(s,b);printf(nn出栈的元素为:); printf(%d,c);printf( %dn,d);printf(n现在栈中的元素为:);shstack(s);LinkQueue q;initqueue(&q);elemtype a;printf(nnn请输入5个进队的元素:n);for(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论