用鍊錶實現佇列的功能

2022-03-27 13:32:21 字數 2325 閱讀 2900

鍊錶不限定元素的長度,可以動態分配元素並新增,另外經常的增刪是鍊錶優於其他資料結構的特點.

今天我們用鍊錶來實現乙個佇列.

linklist.h

#include #include 

#include

#include

#include

#include

#define new(type) (type *)malloc(sizeof(type))

#define free(p) \

if (p !=null)

typedef

struct

nodelistnode, *plistnode;

typedef

struct

_queuequeue, *pqueue;

pqueue createdqueue(

void

);plistnode createnode(

intvalue);

plistnode popqueue(pqueue);

void

pushqueue(pqueue queue, plistnode node);

void destroyqueue(pqueue *queue);

void destroylistnode(plistnode *node);

intlengthofqueue(pqueue queue);

void showqueue(pqueue queue);

這裡引進size對佇列進行計數,

api中並沒有判斷empty 或者 full,直接用這個size即可.

linklist.c

#include #include 

#include

#include

#include

#include

#include

#include

#include

"linklist.h"//

建立佇列時,頭尾指標均指向data域為0的節點.

pqueue createdqueue(void

)plistnode createnode(

intvalue)

//刪除節點是刪除headlink指向的節點,改變headlink指向

plistnode popqueue(pqueue queue)

//增加節點放在隊尾,改變taillink指向,新增第乙個元素headlink和taillink均指向這個節點

void

pushqueue(pqueue queue, plistnode node)

else

queue->size++;

}void destroyqueue(pqueue *queue)

//free(queue->headlink);

//free(queue->taillink);

free(*queue);

}void destroylistnode(plistnode *node)

intlengthofqueue(pqueue queue)

void

showqueue(pqueue queue)

printf("\n

");}

測試程式的主函式main.c

#include#include

#include

#include

#include

#include

#include

"linklist.h

"int

main()

view code

輸出結果如下:

push circularqueue 1,2,3,4,5,6,7

..showqueue order [2]

showqueue order [

2] [3] [4] [5] [6

]showqueue order [

3] [4] [5] [6

]showqueue order [

4] [5] [6

]showqueue order [

5] [6

]showqueue order [6]

push circularqueue

1,2,3,4,5,6,7

..showqueue order [2]

showqueue order [3]

showqueue order [

3] [4]

用鍊錶實現佇列的功能

鍊錶不限定元素的長度,可以動態分配元素並新增,另外經常的增刪是鍊錶優於其他資料結構的特點 今天我們用鍊錶來實現乙個佇列.linklist.h include include include include include include define new type type malloc siz...

用鍊錶和陣列實現佇列

佇列的原則是先進先出,主要有offer,poll,peek,isempty和size方法.用鍊錶實現 package test class node node int var public class queuetest else tail node size 元素出隊 public int pol...

用鍊錶實現佇列和棧

1.定義佇列介面 public inte ce myqueue 2.設計介面的實現類 首先佇列是乙個容器,要設定容器的各種方法,我們需要一些原料,這裡我選擇兩個節點和乙個表示容器大小的n,頭節點first用於獲取佇列頭部元素,last指向佇列尾部,同時也作為乙個游標,來迴圈訪問佇列各個元素。關於方法...