一.實(shí)驗(yàn)項(xiàng)目名稱
循環(huán)隊(duì)列和鏈?zhǔn)疥?duì)列的創(chuàng)建 二、實(shí)驗(yàn)?zāi)康?1、掌握隊(duì)列的特點(diǎn)(先進(jìn)先出 FIFO)及基本操作,如入隊(duì)、出隊(duì)等, 2、隊(duì)列順序存儲結(jié)構(gòu)、鏈?zhǔn)酱鎯Y(jié)構(gòu)和循環(huán)隊(duì)列的實(shí)現(xiàn),以便在實(shí)際問題背景下靈活應(yīng)用。
三、實(shí)驗(yàn)內(nèi)容 1.鏈?zhǔn)疥?duì)列的實(shí)現(xiàn)和運(yùn)算 2.循環(huán)隊(duì)列的實(shí)現(xiàn)和運(yùn)算 四、主要儀器設(shè)備及耗材 VC++6.0 運(yùn)行環(huán)境實(shí)現(xiàn)其操作 五.程序算法 (1) 循環(huán)隊(duì)列操作的算法 1> 進(jìn)隊(duì)列 Void
enqueue (seqqueue
&q, elemtype
x) {
if ((q.rear+1)%maxsize = = q.front)
cout<<”overflow”; else
{
q.rear=(q.rear+1)%maxsize; //編號加 1 或循環(huán)
回第一個(gè)單元
q.queue[q.rear]=x;
} } 2> 出隊(duì)列 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 指向隊(duì)頭前一個(gè)位置 } 4> 判隊(duì)列空否
int empty(seqqueue q ) {
if
(q.rear= =q.front)
reurn 1;
else return 0;
} (2).鏈隊(duì)列操作的算法 1> . 鏈隊(duì)列上的初始化
void
INIQUEUE( linkqueue
&s)
{
link
*p;
p=new
link;
p->next=NULL;
//p 是結(jié)構(gòu)體指針類型,用->
s.front=p;
//s 是結(jié)構(gòu)體變量,用.
s.rear=p;
//頭尾指針都指向頭結(jié)點(diǎn) } 2>. 入隊(duì)列 void
push(linkqueue &s, elemtype
x) {
link
*p;
//p 是結(jié)構(gòu)體指針類型,用->
p=new
link;
p->data=x;
p->next=s.rear->next;
//s 是結(jié)構(gòu)體變量,用.
s.rear->next=p;
s.rear=p;
//插入最后 } 3> 判隊(duì)空 int
empty( linkqueue
s ) {
if (s.front= =s.rear) return 1;
else return 0; } 4>. 取隊(duì)頭元素
elemtype
gethead( linkqueue s ) {
if (s.front= =s.rear)
return
NULL;
else
retuen
s.front->next->data; }
5>.出 出 隊(duì)列
void
pop(linkqueue &s) {
link
*p;
p=s.front->next; if (p->next= =NULL)//鏈隊(duì)列中只有一個(gè)元素,需要修改 rear 指針
{
s.front->next=NULL;
s.rear=s.front;} else
s.front->next =p->next;//rear 不用變 delete (p); } 六 六. 程序源代碼 a. 循環(huán)隊(duì)列源代碼 #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)
//取隊(duì)頭元素
{if (q.rear == q.front)
//判斷是否隊(duì)列為空 cout<<"underflow"; else return q.queue[(q.front+1)%MAXN]; }
main() {seq
q; int i,y; iniq(q); cout<<"輸入元素入隊(duì) 0 為止"<<endl; cin>>i; while(i) { enq( q,i); cin>>i;
} y=gethead( q); cout<<"隊(duì)頭為="<<y<<endl; dlq( q); y=gethead( q); cout<<"執(zhí)行一次刪除隊(duì)頭后,隊(duì)頭為="<<y<<endl; } b. 鏈隊(duì)列的源代碼 #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) //打印隊(duì)列
{
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<<"輸入隊(duì)列元素,0 時(shí)結(jié)束:"<<endl;
cin>>e;
while(e!="0"){
EnQueue(Q,e);
cin>>e;
}
cout<<"隊(duì)列為:"<<endl;
disp(Q);
DeQueue(Q,e1);
cout<<endl<<"執(zhí)行一次刪除隊(duì)頭,刪除的元素是:"<<e1<<endl;
cout<<"隊(duì)列為:"<<endl;
disp(Q);
cout<<endl; } 六.程序輸入數(shù)據(jù)及實(shí)驗(yàn)結(jié)果 a.循環(huán)隊(duì)列實(shí)驗(yàn)結(jié)果
c. 鏈隊(duì)列實(shí)驗(yàn)結(jié)果
七、思考討論題或體會或?qū)Ω倪M(jìn)實(shí)驗(yàn)的建議
(1)體會 a.C++語言知識不懂,需要好好學(xué)習(xí); b.對單鏈表不夠熟悉,要多練習(xí)創(chuàng)建單鏈表及其基本操作。
八、參考資料 a.《數(shù)據(jù)結(jié)構(gòu)》 李根強(qiáng)主編
中國國水利水電出版社 b.《C++語言程序設(shè)計(jì)》 鄭莉
董淵 何江舟編
清華大學(xué)出版社
推薦訪問: 隊(duì)列 實(shí)驗(yàn) 報(bào)告下一篇:醫(yī)院自查報(bào)告
同志們:今天這個(gè)大會,是市委全面落實(shí)黨要管黨、從嚴(yán)治黨要求的一項(xiàng)重大舉措,也是對縣市區(qū)委書記履行基層黨建工作第一責(zé)任人情況的一次集中檢閱,同時(shí)是對全市基層黨建工作的一次再部署、再落實(shí)的會議。前面,**
***年,我認(rèn)真履行領(lǐng)班子、帶隊(duì)伍、抓黨員、保穩(wěn)定的基層黨建工作思路,以學(xué)習(xí)貫徹習(xí)近平新時(shí)代中國特色社會主義思想和黨的十九大歷次全會精神為主線,以市局基層黨建工作考核細(xì)則為落腳點(diǎn),落實(shí)全面從嚴(yán)治黨主體
根據(jù)會議安排,現(xiàn)將2022年履行抓基層黨建工作職責(zé)情況報(bào)告如下:一、履職工作特色和亮點(diǎn)1 突出政治建設(shè),著力在思想認(rèn)識上提高。牢固樹立抓黨建就是抓政績的理念,以“黨建工作抓引領(lǐng)、社區(qū)治理求突破,為民服
2022年以來,在**黨委的正確領(lǐng)導(dǎo)下,堅(jiān)持以習(xí)近平新時(shí)代中國特色社會主義思想為指導(dǎo),深入學(xué)習(xí)宣傳貫徹黨的二十大精神,以黨建工作為統(tǒng)領(lǐng),扎實(shí)開展夯實(shí)“三個(gè)基本”活動(dòng),以“四化四力”行動(dòng)為抓手,聚力創(chuàng)建
各位領(lǐng)導(dǎo),同志們:根據(jù)會議安排,現(xiàn)就2022年度抓基層黨建工作情況匯報(bào)如下:一、主要做法及成效(一)強(qiáng)化政治引領(lǐng)。一是不斷強(qiáng)化理論武裝。堅(jiān)持通過黨組會、中心組學(xué)習(xí)會和“三會一課”,第一時(shí)間、第一議題學(xué)
2022年度抓基層黨建工作述職報(bào)告按照黨委工作部署,現(xiàn)將本人2022年度抓基層黨建工作情況報(bào)告如下:一、2022年度抓基層黨建工作情況(一)旗幟鮮明講政治將旗幟鮮明講政治放在全局發(fā)展首要位置,積極開展
2022年,是我在數(shù)計(jì)系黨總支書記這個(gè)新崗位上度過的第一個(gè)完整的工作年度。回首一年來在校黨委的正確領(lǐng)導(dǎo)下,與數(shù)計(jì)系領(lǐng)導(dǎo)班子和全體師生共同走過的日子,艱辛歷歷在目,收獲溫潤心田。作為黨總支書記,我始終牢
按照考核要求,現(xiàn)將本人一年來,作為統(tǒng)戰(zhàn)部長履行職責(zé)、廉潔自律等方面情況報(bào)告如下:一、著眼增強(qiáng)政治素質(zhì),不斷深化理論學(xué)習(xí)堅(jiān)持把旗幟鮮明講政治作為履職從政的第一位要求,帶領(lǐng)統(tǒng)戰(zhàn)系統(tǒng)干部堅(jiān)決擁護(hù)“兩個(gè)確立”
**年,緊緊圍繞黨工委、管委會的決策部署,全體人員團(tuán)結(jié)協(xié)作、凝心聚力,緊扣黨工委“**”基本工作思路,全力開拓進(jìn)取,認(rèn)真履職盡責(zé),圓滿完成各項(xiàng)工作任務(wù)。一、個(gè)人思想政治狀況檸檬文苑www bgzjy
按照縣委關(guān)于開展抓基層黨建述職評議會議的有關(guān)要求,經(jīng)請示縣委組織部同意,今天,我們在此召開2022年度基層黨組織書記抓基層黨建述職評議會議。1 首先,請**黨委書記,**同志述職。**黨委能夠主動(dòng)研究