1. 程式人生 > >隊列(鏈式存儲結構)

隊列(鏈式存儲結構)

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; } }

隊列(鏈式存儲結構)