鏈隊列的初始化、入隊、出隊等操作實現


鏈隊列的初始化、入隊、出隊等基本操作實現代碼如下:

#include<iostream>

using namespace std;

#define  TRUE 1

#define  FALSE 0


//鏈隊列定義

typedef struct Node

{

int data;//數據域

struct Node *next;//指針域

}LinkQueueNode;


typedef struct 

{

LinkQueueNode *front;//隊頭指針front

LinkQueueNode *rear;//隊頭指針rear

}LinkQueue;


//將Q初始化爲一個空的鏈隊列

int InitQueue(LinkQueue *Q)

{

Q->front = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));

if (Q->front != NULL)

{

Q->rear = Q->front;

Q->front->next = NULL;

return TRUE;

}

else

{

return FALSE;//溢出

}

}


//將數據元素x插入到隊列Q中

int EnterQueue(LinkQueue *Q,int x)

{

LinkQueueNode *NewNode;

NewNode = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));

if (NewNode != NULL)

{

NewNode->data=x;

NewNode->next = NULL;

Q->rear->next = NewNode;

Q->rear = NewNode;

return TRUE;

}

else

{

return FALSE;//溢出

}

}


//將隊列Q的隊頭元素出隊,並存放到x所指的存儲空間中

int DeleteQueue(LinkQueue *Q, int *x)

{

LinkQueueNode *p;

if (Q->front == Q->rear)

{

return FALSE;

}

p = Q->front->next;

Q->front->next = p->next;//隊頭元素p出隊

if (Q->rear==p)//如果隊中只有一個元素p,則p出隊後成爲空隊

{

Q->rear= Q->front;

}

*x = p->data;

free(p);//釋放存儲空間

return TRUE;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章