鏈式佇列C語言實現詳解

2021-10-01 04:18:33 字數 2760 閱讀 5243

目錄

一、佇列基礎知識

二、鏈式佇列資料結構

三、鏈式佇列操作函式宣告

四、建立鏈式佇列

1、佇列頭部動態建立

2、佇列頭部靜態建立

五、出佇列

六、入佇列

七、佇列刪除

八、佇列銷毀

九、驗證程式

tail指標指向隊尾;跟順序佇列有點不同,順序佇列tail指向即將入隊的節點,入隊過程為:將資料存放到tail指向的節點中,再將tail指向下乙個將要入隊的位置;而鏈式佇列中tail指向最後一次入隊的節點,入隊過程為:將資料存放到tail指向節點的下一節點中,再將tail指向剛新增的節點

#define list_queue_num(pqueue)      (pqueue->num)

#define list_queue_is_empty(pqueue) (pqueue->num == 0)

struct list_queue_node

;struct list_queue

;

extern struct list_queue* list_queue_creat(void);

extern int list_queue_init (struct list_queue *queue);

extern int list_queue_empty (struct list_queue *queue);

extern int list_queue_destory(struct list_queue *queue);

extern int list_queue_dequeue(struct list_queue *queue, void *out_data);

extern int list_queue_enqueue(struct list_queue *queue, void *in_data, int dsize);

extern void list_queue_test(void);

/**

* dynamically create a list queue.

* * @return null:malloc fail

* !null:success

*/struct list_queue* list_queue_creat(void)

/**

* init a list queue.

* * @param queue:list queue

* @return -1:queue is null

* 0:success

*/int list_queue_init(struct list_queue *queue)

/**

* dequeue data from the list queue.

* * @param queue: list queue

* @param out_data: dequeue data

* @return -1: fail

* -2: queue is empty

* 0: success

*/int list_queue_dequeue(struct list_queue *queue, void *out_data)

/**

* enqueue data to the list queue backwards.

* * @param queue: list queue

* @param in_data: enqueue data

* @return -1: fail

* 0: success

*/int list_queue_enqueue(struct list_queue *queue, void *in_data, int dsize)

else

queue->num++;

return 0;

}

/**

* delete list queue space.

* * @param queue: list queue

* @return -1: fail

* 0:success

*/int list_queue_empty(struct list_queue *queue)

return 0;

}

/**

* delete and destroy a list queue.

* * @param queue: list queue

* @return -1: fail

* 0:success

*/int list_queue_destory(struct list_queue *queue)

struct list_queue *list_queue_head;

int list_queue_w[5] = ;

int list_queue_r[5] = ;

void list_queue_test(void)

C語言實現鏈式佇列

鏈式佇列,簡稱 鏈佇列 即使用鍊錶實現的佇列儲存結構。鏈式佇列的實現思想同順序佇列類似,只需建立兩個指標 命名為 top 和 rear 分別指向鍊錶中佇列的隊頭元素和隊尾元素,如下圖所示 所示為鏈式佇列的初始狀態,此時佇列中沒有儲存任何資料元素,因此 top 和 rear 指標都同時指向頭節點。在建...

鏈式佇列 C語言實現

鏈式佇列的儲存結構 我們知道,佇列是操作受限制的線性表,佇列有隊頭和隊尾,插入元素的一端稱為隊頭,刪除元素的一端稱為隊尾。練市佇列的隊頭指標指向當前佇列的隊頭結點位置,隊尾指標指向佇列的當前隊尾結點位置。對於不帶頭結點的鏈式佇列,出佇列時可直接刪除隊頭指標所指的結點,因此,鏈式佇列不帶頭結點更方便。...

C語言實現鏈式佇列

include link queue.h 建立入列 出列顯示所有資料 是否為空 釋放佇列 建立1 void create link queue 1 plinkqueue h h len 0 h header null h tail null 建立2 void create link queue 2 ...