1 / 11
文档名称:

栈与队列的顺序表示及实现实验报告+程序.doc

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

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

分享

预览

栈与队列的顺序表示及实现实验报告+程序.doc

上传人:119060444 2016/12/28 文件大小:496 KB

下载得到文件列表

栈与队列的顺序表示及实现实验报告+程序.doc

文档介绍

文档介绍:电子信息工程学院 2012 级《数据结构》实验报告姓名刘茂学号 2220********** 实验项目栈与队列的顺序表示和实现实验报告实验内容编写一个程序实现顺序栈和顺序队列的各种基本运算,并完成以下操作: 1、初始化顺序队列; 2、建立顺序队列; 3、入队; 4、出队; 5、判断队列是否为空; 6、取队头元素; 7、遍历队列; 8、初始化顺序栈; 9、插入元素; 10、删除栈顶元素; 11、取栈顶元素; 12、遍历顺序栈; 13、置空顺序栈; 算法设计与程序实现: 算法分析 1 、对于顺序栈和顺序队列,都是采用一组地址连续的存储单元一次存放自栈底到栈顶或从队列头到队列尾的数据元素。 2、对于栈,设栈顶指针为 top ,栈底指针为 base 。用 top=0 或top=bas e 表示栈空。对于队列,设指针 front 为队列头指针,设指针 rear 表示队列尾指针。用 front=rear=0 表示空队列。 3、初始化栈和队列时,令 top=0 或front=rear=0 ,将栈或队列置空。 4、每入栈一个数据元素,指针 top 增加 1,出栈时,指针 top 减小 1。每当插入新的队尾数据元素时,指针 rear 增加 1 ,每当删除一个队头数据元素时,指针 front 减小 1。核心程序//顺序队列#include<> #include<> #include<> #define MAXNUM 100 #define ElemType int #define TRUE 1#define FALSE 0//定义队列的顺序存储结构 typedef struct {ElemType queue[MAXNUM]; int front; int rear; 电子信息工程学院 2012 级《数据结构》实验报告}sqqueue; //初始化顺序队列 int initQueue(sqqueue *q) {if(!q)return FALSE; q->front=-1; q->rear=-1; return TRUE; }//入队 int append(sqqueue *q,ElemType x) {if(q->rear>=MAXNUM-1)return FALSE {q->rear++; q->queue[q->rear]=x; return TRUE; }//出队 ElemType Delete(sqqueue *q) {ElemType x; if(q->front==q->rear) {printf(" 队列空!\n");return 0;} x=q->queue[++q->front]; printf(" 队头元素%d出队!\n",x); return x; }//判断队列是否为空 int Empty(sqqueue *q) {if(q->front==q->rear)return TRUE; return FALSE;} //获取队头元素 int gethead(sqqueue *q) {ElemType x; if(q->front==q->rear) {printf(" 队列空!\n");return 0;} x=q->queue[q->front+1];printf("\n 队头元素:%d 出队\n",x); return x; }//遍历队 void display(sqqueue *q) {int s; s=q->front; if(q->front==q->rear) 电子信息工程学院 2012 级《数据结构》实验报告 printf(" 队列为空!\n"); else {printf("\n 顺序队列依次为:"); while(s<q->rear) {s=s+1; printf("%d<-",q->queue[s]); }printf("\n"); printf(" 顺序队列队尾元素所在位置为:rear=%d\n,q->rear); printf(" 书序队列队头元素所在位置为:front=%d\n,q->front); }}//建立顺序队列 void Setsqqueue(sqqueue *q) {int n,i,m; printf("\n 请输入顺序队列的长度:"); scanf("%d",&n); printf("\n 请依次输入顺序队列的元素值:\n"); for(i=0;i<n;i++) {scanf("%d",&m); append(q,m);} }//主函数 void main() {sqqueue *head; int x,select; head=(squeue*)malloc(sizeof(squeue)); printf("\n 第一次使用必须初始化