鏈式佇列實現起來很簡單。
唯一需要注意的是:
在入隊和出隊時,需要分別處理一下隊頭和隊尾為空的情況。
/*
** 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...