一.實驗項目名稱
循環隊列和鏈式隊列的創建 二、實驗目的 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 首先,請**黨委書記,**同志述職。**黨委能夠主動研究