队列链式结构C/C++实现(数据结构严蔚敏版)
生活随笔
收集整理的這篇文章主要介紹了
队列链式结构C/C++实现(数据结构严蔚敏版)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
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{ //鏈隊(duì)列結(jié)點(diǎn)的類型定義QElemType data;struct QNode *next;}QNode,*QueuePtr;typedef struct{ //鏈隊(duì)列的表頭結(jié)點(diǎn)的的類型定義QueuePtr front;//隊(duì)頭指針,指向鏈表頭結(jié)點(diǎn)QueuePtr rear; //隊(duì)尾指針,指向隊(duì)尾結(jié)點(diǎn)}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" //初始化隊(duì)列 Status InitQueue(LinkQueue &Q){//構(gòu)造一個(gè)空隊(duì)列Q,建立一個(gè)頭結(jié)點(diǎn) Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));if(!Q.front) exit(OVERFLOW);//頭節(jié)點(diǎn)的指針域?yàn)镹ULL Q.front->next = NULL;return OK; }//銷毀隊(duì)列 Status DestroyQueue(LinkQueue &Q){//銷毀隊(duì)列while(Q.front){Q.rear = Q.front->next;free(Q.front);Q.front = Q.rear;}return OK; }//插入隊(duì)尾 Status EnQueue(LinkQueue &Q, QElemType e){//插入元素e為Q的新隊(duì)尾元素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; }//刪除隊(duì)列的頭 Status DeQueue(LinkQueue &Q, QElemType &e){//若隊(duì)列不為空,則刪除Q的隊(duì)頭元素,用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é)點(diǎn)出隊(duì),//隊(duì)尾指針空置 Q.rear = Q.front;free(p);return OK; }//打印隊(duì)列 void PrintQueue(LinkQueue Q){//顯示隊(duì)列if(Q.front == Q.rear)cout<<"隊(duì)列為空\(chéng)n";QueuePtr p = Q.front->next;while(p!=NULL){cout<<setw(6)<<p->data;p=p->next;} }3、測(cè)試文件test.cpp
#include "Queue.h" int main(void){LinkQueue Q;int i,n,e;cout<<"構(gòu)造隊(duì)列:\n";InitQueue(Q);cout<<"輸入要構(gòu)造隊(duì)列的結(jié)點(diǎn)個(gè)數(shù):";cin>>n;for (i=1;i<=n;i++){cout<<"輸入第"<<i<<"個(gè)結(jié)點(diǎn)的值";cin>>e; if(!EnQueue(Q,e)) break;};cout<<"構(gòu)造的隊(duì)列為:";PrintQueue(Q);cout<<endl;cout<<"入隊(duì)一個(gè)新結(jié)點(diǎn),值為:";cin>>e;if(EnQueue(Q,e)) {cout<<"新隊(duì)列為:\n";PrintQueue(Q);cout<<endl;}elsecout<<"error!\n";cout<<"出隊(duì)一個(gè)結(jié)點(diǎn)\n";if (DeQueue(Q,e)){cout<<"出隊(duì)元素值為:"<<e<<endl;cout<<"新隊(duì)列為:\n";PrintQueue(Q);cout<<endl;}elsecout<<"error!\n";DestroyQueue(Q); }總結(jié)
以上是生活随笔為你收集整理的队列链式结构C/C++实现(数据结构严蔚敏版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 队列顺序结构C/C++实现(数据结构严蔚
- 下一篇: 字符串静态顺序结构C/C++实现(数据结