LinkQueue 鏈式佇列

2021-06-05 09:23:50 字數 1802 閱讀 9448

鏈式佇列實現起來很簡單。

唯一需要注意的是:

在入隊和出隊時,需要分別處理一下隊頭和隊尾為空的情況。

/*

** file name: linkqueue.h

** author: zhoufeng

** date: 2012/03/28

*/#ifndef link_queue_h

#define link_queue_h

#define bool int

#define false 0

#define true 1

#define error 0

#define success 1

typedef int eletype;

typedef struct lqnode

lqnode;

typedef struct linkqueue

linkqueue;

void initlinkqueue(linkqueue *lq);

bool islinkqueueempty(linkqueue *lq);

int linkqueuedelete(linkqueue *lq, eletype *pdata);

int getqueue(linkqueue *lq, eletype *pdata);

void freequeue(linkqueue *lq);

#endif

/*

** file name: linkqueue.c

** author: zhoufeng

** date: 2012/03/28

*/#include #include #include "linkqueue.h"

void initlinkqueue(linkqueue *lq)

lq->pfront = null;

lq->prear = null;

}bool islinkqueueempty(linkqueue *lq)

if(lq->pfront == null)

else

} pnewnode = (lqnode*)malloc(sizeof(lqnode));

pnewnode->data = data;

pnewnode->pnext = null;

if(lq->prear != null)

lq->prear = pnewnode;

if(lq->pfront == null)

return success;

}int linkqueuedelete(linkqueue *lq, eletype *data)

if(lq->pfront == null)

*data = lq->pfront->data;

pdel = lq->pfront;

lq->pfront = lq->pfront->pnext;

if(lq->pfront == null)

free(pdel);

return success;

}int getqueue(linkqueue *lq, eletype *pdata)

*pdata = lq->pfront->data;

return success;

}void freequeue(linkqueue *lq)

while(lq->pfront != null)

lq->prear = lq->pfront = null;

}

佇列 佇列的鏈式儲存方式 LinkQueue

佇列的鏈式儲存結構 功能 包含 1 佇列的鏈式儲存結構的資料結構定義 2 初始化鏈式佇列 3 往鏈式佇列中插入元素 入隊 4 刪除鏈式佇列中的元素 出隊 注意 不進行debug,只實現基本功能 author tmw date 2018 3 9 include include include defi...

鏈結佇列(Link Queue) 佇列的鏈結實現

之前討論的連續實現的佇列結構 佇列 queue 先進先出 fifo 的資料結構 data structures 與連續棧結構存在著同樣的缺點,即都需要大片連續的儲存空間。而這個問題在佇列結構裡更加嚴重。解決的辦法則與連續棧結構問題的辦法一樣 使用鏈結佇列。鏈結佇列實現除了不需要連續空間外,其所支援的...

佇列 鏈式佇列

主要是鏈式佇列用單鏈表來實現,說白了還是對單鏈表的應用。為了操作實現方便,這裡採用帶頭結點的單鏈表結構。鍊錶的頭部作為隊首,鍊錶的尾部作為隊尾。一共設定兩個指標,乙個隊首指標和乙個隊尾指標,如圖所示。package 佇列的實現 public inte ce queue package 佇列的實現 p...