文档详情

数据结构栈和队列实验报告C语言源码(程序在C-Free下通过) .doc

发布:2015-08-18约2.81千字共7页下载文档
文本预览下载声明
课程名称 实验项目名称 (一)实验目的和要求; 熟练掌握栈及队列基本操作的实现 (二)实验主要内容; 建立栈并进行元素(8,9,5,4)入栈,实现链栈的建立及入栈的基本操作; 实现元素(9,5)的出栈,实现链栈的出栈的操作; 建立链队列,并实现元素(4,5,7,6,8)入队,实现链队列的建立,和入队的基本操作; 实现元素(4,5,7,6,8)出队,实现链队列的出队的基本操作 (三)主要仪器设备 计算机,VC++高级程序语言 (四)实验原理 栈的修改时按照先进后出的原则进行的,试验中用到构造空栈,及入栈出栈操作。队列是一种先进先出的线性表,只允许在表的一端插入,而在另一端删除元素,试验中构造队并且入队出队。 (五)实验步骤及调试分析; 根据课本基本操作写好源程序,基本操作在书本中已经给出,写出主函数,调试分析程序,找出错误,并修改后程序能够运行并得出正确输出。试验中,有些小错误经常犯,比如符号,函数声明等。 (六)实验结果及分析; 实验结果如下: 能够按照实验要求得出正确结果 (七)附录:源程序 #includestdio.h #includemalloc.h #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef 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=(
显示全部
相似文档