您好,登錄后才能下訂單哦!
//隊列的基本操作
#include <iostream>
using namespace std;
#define datatype int
#define Status int
#define OK 1
#define ERROR 0
typedef struct linkqueuenode{ //定義隊列節點
datatype data;
struct linkqueuenode *next;
}LinkQueueNode;
typedef struct { //定義鏈式隊列
LinkQueueNode *front;
LinkQueueNode *rear;
}LinkQueue;
//初始化
void InitQueue(LinkQueue *q)
{
q->front=NULL;
q->rear=NULL;
}
//入隊
Status InQueue(LinkQueue *q,datatype x)
{
//創建節點
LinkQueueNode *s=new LinkQueueNode;
s->data=x;
s->next=NULL;
//是否隊空
if(q->front==NULL)
{
s->next=q->rear;
q->front=s;
q->rear=s;
}
else
{
q->rear->next=s;
q->rear=s;
}
return 0;
}
//出隊
Status OutQueue(LinkQueue *q,datatype &x)
{//若隊空,返回0;出隊完成,返回1
if(NULL==q->front) return 0;
LinkQueueNode *p=q->front;
x=p->data;
q->front=p->next;
delete p;
return 1;
}
//顯示隊列元素
Status ShowQueue(LinkQueue *q)
{
if(q->front==NULL) {cout<<"棧空!"<<endl;return 0;}//隊列空
LinkQueueNode *p;
p=q->front;
cout<<"遍歷隊列: ";
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
cout<<endl;
return 1;
}
//讀隊首元素
Status ReadQueue(LinkQueue *q)
{
if(NULL==q->front) return 0;
cout<<"隊首元素為:"<<q->front->data<<endl;;
return 1;
}
//雙隊列,隊首出棧
Status OutQueueFront(LinkQueue *q,datatype &x)
{//若隊空,返回0;出隊完成,返回1
if(NULL==q->front) return 0;
LinkQueueNode *p=q->front;
x=p->data;
q->front=p->next;
delete p;
return 1;
}
//雙隊列,隊尾出棧
Status OutQueueRear(LinkQueue *q,datatype &x)
{
//對空,返回0
if(NULL==q->front) return 0;
//找q.rear的前驅
LinkQueueNode *ptr;
ptr=q->rear;//ptr指向對尾
LinkQueueNode *p=q->front;
while(p->next!=q->rear)//p指向q->rear的前驅
{
p=p->next;
}
x=q->rear->data;
p->next=q->rear->next;
q->rear->next=p->next;
q->rear=p;
delete ptr;
return 1;
}
int main()
{
LinkQueue que;//創建隊列
InitQueue(&que);//初始化隊列
InQueue(&que,1);//入隊
InQueue(&que,2);
InQueue(&que,3);
InQueue(&que,4);
ShowQueue(&que);//1,2,3,4
datatype temp;//用于保存出隊的data
OutQueue(&que,temp);//2,3,4
ShowQueue(&que);//顯示隊列元素
ReadQueue(&que);
OutQueueRear(&que,temp);//2,3
ShowQueue(&que);
system("pause");
return 0;
}
-----------------------------------------------------------
運行結果:
遍歷隊列: 1 2 3 4
出隊!:
遍歷隊列: 2 3 4
隊首元素為:2
隊尾出隊!
遍歷隊列: 2 3
Press any key to continue . . .
鮮少偉
2016-4-18
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。