1 / 5
文档名称:

实验一实现队列和栈的各种算法及操作.doc

格式:doc   大小:85KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验一实现队列和栈的各种算法及操作.doc

上传人:63229029 2017/6/18 文件大小:85 KB

下载得到文件列表

实验一实现队列和栈的各种算法及操作.doc

文档介绍

文档介绍:( 规格为 A4 纸或 A3 纸折叠) (用五号宋体和 Times New Roman, A4 纸双面打印) 一、实验目的; 1. 理解队列和栈的顺序存储结构和链式存储结构。通过本实验,熟悉队列、栈的结构特点。 2. 熟悉队列、栈的结构上的操作与算法的实现。二、实验内容; 1. 队列的基本操作和应用。 2. 栈的基本操作和应用。三、实验原理; 队列与栈是一种操作受限制的线性表,在了解线性表的基本原理的基础上,理解与完成此项实验。队列是一种先进先出( FIFO )的线性表,它允许在表的一端(队尾)插入元素(入队) ,而在表的另一端(队头)删除元素(出队)。栈是限定在表尾(栈顶)进行插入或删除操作的线性表。又称为后进先出( LIFO )的线性表。四、实验步骤; 1. 调试下列程序“顺序栈程序一”,掌握顺序栈的算法和实现方法。 2. 调试下列程序“链队列程序二”,掌握链队列的算法和实现方法。 3. 根据顺序栈程序的学****采用栈的链式存储结构,用菜单的形式完成栈的出栈、入栈、取栈顶元素等基本操作。 4. 根据链队列程序的学****采用队列的顺序存储结构,用菜单的形式完成队列的建立,出队,入队等基本操作。五、程序源代码及注释/* 链式栈:采用栈的链式存储结构,用菜单的形式完成栈的入栈,出栈和取栈顶元素。*/ #include<> #include<> /* 链队列: 采用队列的顺序存储结构, 用菜单的形式完成队列的建立,出队入队。*/ #include<> #include<> #define MAXQSIZE 10 typedef struct SNode { int data; struct SNode *next; }SNode,*LinkStack; LinkStack top; LinkStack PushStack(LinkStack top,int x) // 数据元素入栈{ LinkStack s; s=(LinkStack)malloc(sizeof(SNode)); s->data=x; s->next=top; top=s; return top; } LinkStack PopStack(LinkStack top) // 数据元素出栈{ LinkStack p; if(p!=NULL) { p=top; return top; } else printf(" 栈已空的,无法退栈! \n"); return 0; } int GetStackTop(LinkStack top) // 取栈顶元素{ typedef struct{ int base[10]; int front; int rear; }*SqQueue; void InitQueue(SqQueue Q) // 初始化{ Q->front=0; Q->rear=Q->front; } int EnQueue(SqQueue Q) // 数据元素入队{ int e; printf(" 请输入入队元素: "); scanf("%d",&e); if((Q->rear+1)%MAXQSIZE==Q->front) { printf(" 队已满,无法入队。\n"); return 0; } else { Q->base[Q-