一.实验项目名称
循环队列和链式队列的创建 二、实验目的 1、掌握队列的特点(先进先出 FIFO)及基本操作,如入队、出队等, 2、队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活应用。
三、实验内容 1.链式队列的实现和运算 2.循环队列的实现和运算 四、主要仪器设备及耗材 VC++6.0 运行环境实现其操作 五.程序算法 (1) 循环队列操作的算法 1> 进队列 Void
enqueue (seqqueue
&q, elemtype
x) {
if ((q.rear+1)%maxsize = = q.front)
cout<<”overflow”; else
{
q.rear=(q.rear+1)%maxsize; //编号加 1 或循环
回第一个单元
q.queue[q.rear]=x;
} } 2> 出队列 Void
dlqueue(seqqueue
&q ) {
if (q.rear= =q.front)
cout<<”underflow”;
else
q.front =(q.front+1)%maxsize; } 3> 取对头元素
elemtype
gethead(seqqueue q ) { if
(q.rear= =q.front)
{ cout<<”underflow”;
return
NULL;}
else
return
q.queue[(q.front+1)%maxsize];
//front 指向队头前一个位置 } 4> 判队列空否
int empty(seqqueue q ) {
if
(q.rear= =q.front)
reurn 1;
else return 0;
} (2).链队列操作的算法 1> . 链队列上的初始化
void
INIQUEUE( linkqueue
&s)
{
link
*p;
p=new
link;
p->next=NULL;
//p 是结构体指针类型,用->
s.front=p;
//s 是结构体变量,用.
s.rear=p;
//头尾指针都指向头结点 } 2>. 入队列 void
push(linkqueue &s, elemtype
x) {
link
*p;
//p 是结构体指针类型,用->
p=new
link;
p->data=x;
p->next=s.rear->next;
//s 是结构体变量,用.
s.rear->next=p;
s.rear=p;
//插入最后 } 3> 判队空 int
empty( linkqueue
s ) {
if (s.front= =s.rear) return 1;
else return 0; } 4>. 取队头元素
elemtype
gethead( linkqueue s ) {
if (s.front= =s.rear)
return
NULL;
else
retuen
s.front->next->data; }
5>.出 出 队列
void
pop(linkqueue &s) {
link
*p;
p=s.front->next; if (p->next= =NULL)//链队列中只有一个元素,需要修改 rear 指针
{
s.front->next=NULL;
s.rear=s.front;} else
s.front->next =p->next;//rear 不用变 delete (p); } 六 六. 程序源代码 a. 循环队列源代码 #include<iostream.h> #define MAXN
20 struct seq { char queue[MAXN]; int front
, rear;
};
void iniq(seq
&q) {
q.front=q.rear=MAXN-1; }
void enq(seq &q,char x) {
if((q.rear+1)%MAXN==q.front)
cout<<"overflow";
else {
q.rear=(q.rear+1)%MAXN;
q.queue[q.rear]=x;
} //return(0); } void dlq(seq &q) { if (q.rear == q.front) cout<<"underflow"; else
q.front=(q.front+1)%MAXN; }
int gethead(seq &q)
//取队头元素
{if (q.rear == q.front)
//判断是否队列为空 cout<<"underflow"; else return q.queue[(q.front+1)%MAXN]; }
main() {seq
q; int i,y; iniq(q); cout<<"输入元素入队 0 为止"<<endl; cin>>i; while(i) { enq( q,i); cin>>i;
} y=gethead( q); cout<<"队头为="<<y<<endl; dlq( q); y=gethead( q); cout<<"执行一次删除队头后,队头为="<<y<<endl; } b. 链队列的源代码 #include <iostream.h>
typedef struct QNode {
char data;
QNode *next;
}QNode,*QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear; }LinkQueue;
InitQueue(LinkQueue &Q) {
Q.front=Q.rear=new QNode;
Q.front->next=NULL;
return 0; }
EnQueue(LinkQueue &Q,char e) {
QueuePtr p;
p=new QNode;
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return 0; }
void disp(LinkQueue &Q) //打印队列
{
QueuePtr p;
p=Q.front->next;
while(p!=NULL)
{
cout<<p->data<<"->";
p=p->next;
}
}
DeQueue(LinkQueue &Q,char &e) {
QueuePtr p;
if(Q.front==Q.rear)return 1;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p)
Q.rear=Q.front;
delete p;
return 0; }
void main()
{
LinkQueue Q;
char e,e1;
InitQueue(Q);
cout<<"输入队列元素,0 时结束:"<<endl;
cin>>e;
while(e!="0"){
EnQueue(Q,e);
cin>>e;
}
cout<<"队列为:"<<endl;
disp(Q);
DeQueue(Q,e1);
cout<<endl<<"执行一次删除队头,删除的元素是:"<<e1<<endl;
cout<<"队列为:"<<endl;
disp(Q);
cout<<endl; } 六.程序输入数据及实验结果 a.循环队列实验结果
c. 链队列实验结果
七、思考讨论题或体会或对改进实验的建议
(1)体会 a.C++语言知识不懂,需要好好学习; b.对单链表不够熟悉,要多练习创建单链表及其基本操作。
八、参考资料 a.《数据结构》 李根强主编
中国国水利水电出版社 b.《C++语言程序设计》 郑莉
董渊 何江舟编
清华大学出版社
推荐访问: 队列 实验 报告同志们:今天这个大会,是市委全面落实党要管党、从严治党要求的一项重大举措,也是对县市区委书记履行基层党建工作第一责任人情况的一次集中检阅,同时是对全市基层党建工作的一次再部署、再落实的会议。前面,**
***年,我认真履行领班子、带队伍、抓党员、保稳定的基层党建工作思路,以学习贯彻习近平新时代中国特色社会主义思想和党的十九大历次全会精神为主线,以市局基层党建工作考核细则为落脚点,落实全面从严治党主体
根据会议安排,现将2022年履行抓基层党建工作职责情况报告如下:一、履职工作特色和亮点1 突出政治建设,着力在思想认识上提高。牢固树立抓党建就是抓政绩的理念,以“党建工作抓引领、社区治理求突破,为民服
2022年以来,在**党委的正确领导下,坚持以习近平新时代中国特色社会主义思想为指导,深入学习宣传贯彻党的二十大精神,以党建工作为统领,扎实开展夯实“三个基本”活动,以“四化四力”行动为抓手,聚力创建
各位领导,同志们:根据会议安排,现就2022年度抓基层党建工作情况汇报如下:一、主要做法及成效(一)强化政治引领。一是不断强化理论武装。坚持通过党组会、中心组学习会和“三会一课”,第一时间、第一议题学
2022年度抓基层党建工作述职报告按照党委工作部署,现将本人2022年度抓基层党建工作情况报告如下:一、2022年度抓基层党建工作情况(一)旗帜鲜明讲政治将旗帜鲜明讲政治放在全局发展首要位置,积极开展
2022年,是我在数计系党总支书记这个新岗位上度过的第一个完整的工作年度。回首一年来在校党委的正确领导下,与数计系领导班子和全体师生共同走过的日子,艰辛历历在目,收获温润心田。作为党总支书记,我始终牢
按照考核要求,现将本人一年来,作为统战部长履行职责、廉洁自律等方面情况报告如下:一、着眼增强政治素质,不断深化理论学习坚持把旗帜鲜明讲政治作为履职从政的第一位要求,带领统战系统干部坚决拥护“两个确立”
**年,紧紧围绕党工委、管委会的决策部署,全体人员团结协作、凝心聚力,紧扣党工委“**”基本工作思路,全力开拓进取,认真履职尽责,圆满完成各项工作任务。一、个人思想政治状况柠檬文苑www bgzjy
按照县委关于开展抓基层党建述职评议会议的有关要求,经请示县委组织部同意,今天,我们在此召开2022年度基层党组织书记抓基层党建述职评议会议。1 首先,请**党委书记,**同志述职。**党委能够主动研究