日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

队列链式结构C/C++实现(数据结构严蔚敏版)

發(fā)布時間:2025/3/20 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 队列链式结构C/C++实现(数据结构严蔚敏版) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、頭文件Queue.h;

#include<iostream> #include<iomanip>//格式控制頭文件 #include<stdlib.h> using namespace std;//using namespace std;#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2typedef int Status; typedef int QElemType;typedef struct QNode{ //鏈隊列結(jié)點的類型定義QElemType data;struct QNode *next;}QNode,*QueuePtr;typedef struct{ //鏈隊列的表頭結(jié)點的的類型定義QueuePtr front;//隊頭指針,指向鏈表頭結(jié)點QueuePtr rear; //隊尾指針,指向隊尾結(jié)點}LinkQueue;Status InitQueue(LinkQueue &Q);Status DestroyQueue(LinkQueue &Q);Status EnQueue(LinkQueue &Q, QElemType e);Status DeQueue(LinkQueue &Q, QElemType &e);void PrintQueue(LinkQueue Q);

2、源文件Queue.cpp

#include "Queue.h" //初始化隊列 Status InitQueue(LinkQueue &Q){//構(gòu)造一個空隊列Q,建立一個頭結(jié)點 Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));if(!Q.front) exit(OVERFLOW);//頭節(jié)點的指針域為NULL Q.front->next = NULL;return OK; }//銷毀隊列 Status DestroyQueue(LinkQueue &Q){//銷毀隊列while(Q.front){Q.rear = Q.front->next;free(Q.front);Q.front = Q.rear;}return OK; }//插入隊尾 Status EnQueue(LinkQueue &Q, QElemType e){//插入元素e為Q的新隊尾元素QueuePtr p = (QueuePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);p->data = e;p->next = NULL;Q.rear->next = p;Q.rear = p;return OK; }//刪除隊列的頭 Status DeQueue(LinkQueue &Q, QElemType &e){//若隊列不為空,則刪除Q的隊頭元素,用e返回其值,//并返回OK;否則返回ERRORif(Q.front == Q.rear)return ERROR;QueuePtr p = Q.front->next;e = p->data;Q.front->next = p->next;if(Q.rear == p) //唯一的數(shù)據(jù)結(jié)點出隊,//隊尾指針空置 Q.rear = Q.front;free(p);return OK; }//打印隊列 void PrintQueue(LinkQueue Q){//顯示隊列if(Q.front == Q.rear)cout<<"隊列為空\n";QueuePtr p = Q.front->next;while(p!=NULL){cout<<setw(6)<<p->data;p=p->next;} }

3、測試文件test.cpp

#include "Queue.h" int main(void){LinkQueue Q;int i,n,e;cout<<"構(gòu)造隊列:\n";InitQueue(Q);cout<<"輸入要構(gòu)造隊列的結(jié)點個數(shù):";cin>>n;for (i=1;i<=n;i++){cout<<"輸入第"<<i<<"個結(jié)點的值";cin>>e; if(!EnQueue(Q,e)) break;};cout<<"構(gòu)造的隊列為:";PrintQueue(Q);cout<<endl;cout<<"入隊一個新結(jié)點,值為:";cin>>e;if(EnQueue(Q,e)) {cout<<"新隊列為:\n";PrintQueue(Q);cout<<endl;}elsecout<<"error!\n";cout<<"出隊一個結(jié)點\n";if (DeQueue(Q,e)){cout<<"出隊元素值為:"<<e<<endl;cout<<"新隊列為:\n";PrintQueue(Q);cout<<endl;}elsecout<<"error!\n";DestroyQueue(Q); }

總結(jié)

以上是生活随笔為你收集整理的队列链式结构C/C++实现(数据结构严蔚敏版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。