隊列(鏈式存儲結構)
阿新 • • 發佈:2018-03-11
eat 結構 int type logs nsh com body tps
隊列的鏈式存儲結構不常用
- 同理,實際上也可以用一個單鏈表實現
- 插入、刪除分別在鏈表兩頭進行,即插入在表尾(rear),刪除在表頭(front)
圖解如下:
0、結構初始化
struct ListNode {
ElementType val;
struct ListNode* next;
};
struct QueueNode {
int size;
struct ListNode* front;
struct ListNode* rear;
};
1、建立空隊列 createQueue
struct QueueNode* createQueue() {
struct QueueNode* q=malloc(sizeof(struct QueueNode));
q->front = q->rear = NULL;
q->size=0;
return q;
}
2、入隊操作addQueue
//插入在表尾
void addQueue(struct QueueNode* q,ElementType x) {
struct ListNode* temp=malloc(sizeof(struct ListNode));
temp->val=x;
if (q->size==0) {
q->front = q->rear =temp;
}
else {
q->rear->next=temp;
q->rear=temp;
}
q->size++;
}
3、出隊操作deleteQueue
//刪除在表頭
ElementType deleteQueue(struct QueueNode* q) {
struct ListNode* temp;
ElementType tmp;
if (q->size==0) return ERROR;
else {
temp=q->front;
q->front=temp->next;
tmp=temp->val;
free(temp)
q->size--;
return tmp;
}
}
隊列(鏈式存儲結構)