电子科技大学 电子工程 学院
标 准 实 验 报 告
(实验)课程名称 软件技术基础
学生姓名:
学 号:
指导教师:
一、实验名称
实验四:栈和队列的操作实现
二、实验目的
理解栈和队列的基本概念,栈和队列操作的基本方法以及其编程实现。通过本实验的两个项目的编程、调试和运行结果的比较,分析栈和队列的差别。
三、实验内容
1、 设计一个容量为4的循环队列,编程实现如下操作,并显示各步骤操作后队列的内容:
A、队列初始化为空;
B、将1、2、3三个数据依次做入队操作; C、做两次出队操作(1、2出队); D、将4、5、6三个数据依次做入队操作; E、将数据7做入队操作;
2、设计一个容量为4的顺序栈,编程实现如下操作,并显示各步骤操作后栈的内容:
A、栈初始化为空;
B、将1、2、3三个数据依次做入栈操作; C、做两次出栈操作;
D、将4、5、6三个数据依次做入栈操作; E、将数据7做入栈操作;
四、实验程序
1.循环队列程序
#include
typedef struct {
int data[maxnum]; int front; int rear; }queuetype;
void main() {
void initiatequeue(queuetype *q); int enter(queuetype *q,int x); int deletequeue(queuetype *q); void printqueue(queuetype *q); queuetype *q;
q=(queuetype*)malloc(sizeof(queuetype)); initiatequeue(q); enter(q,1); enter(q,2); enter(q,3);
printf(\入队操作后:\\n\
printqueue(q);
printf(\两次出队操作后:\\n\
deletequeue(q);
deletequeue(q); printqueue(q);
printf(\三次入队操作后:\\n\ enter(q,4); enter(q,5); enter(q,6); printqueue(q);
printf(\第四次入队操作后:\\n\ enter(q,7);
}
void initiatequeue(queuetype *q)//初始化队列 { }
int enter(queuetype *q,int x)//入队操作 {
if(((q->rear)+1)%maxnum==q->front) {printf(\队列已满,不能进行入队操作\\n\return(false); }
q->front=q->rear=0;
else }
int deletequeue(queuetype *q)//出队操作 {
if(q->rear==q->front) {printf(\队列已空\\n\return(false); } else {
q->rear=(q->rear+1)%maxnum;
q->data[q->rear]=x; printf(\成功插入%d\\n\return(true); }
{q->front=(q->front+1)%maxnum;
}
printf(\成功删除\\n\return(q->data[q->front]); }
void printqueue(queuetype *q)//输出队列 { int l; }
if(q->front==q->rear) {printf(\队列已空\ return; } l=q->front; printf(\结果是\\n\while(1)
{ l=(++l)%maxnum; printf(\ }
if(l==q->rear) break;
2.顺序栈程序
#include
typedef struct {