软件技术基础 实验四:栈和队列的操作实现

更新时间:2024-05-26 19:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

电子科技大学 电子工程 学院

标 准 实 验 报 告

(实验)课程名称 软件技术基础

学生姓名:

学 号:

指导教师:

一、实验名称

实验四:栈和队列的操作实现

二、实验目的

理解栈和队列的基本概念,栈和队列操作的基本方法以及其编程实现。通过本实验的两个项目的编程、调试和运行结果的比较,分析栈和队列的差别。

三、实验内容

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 #include #define true 1 #define false 0 #define maxnum 5

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 #include #define true 1 #define false 0 #define maxnum 4

typedef struct {

本文来源:https://www.bwwdw.com/article/jsp7.html

Top