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

发布时间 : 星期五 文章数据结构栈和队列实验报告C语言源码(程序在C-Free下通过)更新完毕开始阅读

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

通过)

课程名称 数据结构 实验项目名称 栈和队列 (一)实验目的和要求;

熟练掌握栈及队列基本操作的实现 (二)实验主要内容;

(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 -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(\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;

联系合同范文客服:xxxxx#qq.com(#替换为@)