鏈式佇列的實現

2022-08-30 18:48:14 字數 2085 閱讀 3718

queue.h

1

#ifndef queue_h

2#define queue_h

34 #include5 #include6 #include78//

node

9 typedef struct

queuenode

10node;

1415

//queue

16 typedef struct

17linkqueue;

2122

//初始化

23void init(linkqueue *q);

24//

建立佇列

25void create(linkqueue *q);

26//

新增乙個元素至隊尾

27val);

28//

從隊頭刪除乙個元素

29void serve(linkqueue *q, int *val);

30//

獲取隊首的元素值

31void top(linkqueue *q, int *val);

3233

//判斷佇列是否為空

34int isempty(linkqueue *q);

35//

獲取佇列的長度

36int length(linkqueue *q);

37//

列印佇列

38void print(linkqueue *q);

39//

清除佇列

40void clear(linkqueue *q);

4142

43#endif

queue.c

1 #include "

queue.h"2

3void init(linkqueue *q)48

9void create(linkqueue *q)

1016

17val)

1827}28

29void serve(linkqueue *q, int *val)

3036 node *oldnode = q->front->next;

37 *val = oldnode->data;

38//

只有乙個元素,佇列置空

39if(q->front->next == q->rear)

40 q->rear = q->front;

41 q->front->next = oldnode->next;

42free

(oldnode);43}

4445

int isempty(linkqueue *q)

4651

52int length(linkqueue *q)

5361

return

len;62}

6364

void clear(linkqueue *q)

6574

//刪去頭結點

75 pcur = q->front;

76 q->front = q->rear =null;

77free

(pcur);78}

7980

void print(linkqueue *q)

8187 node *pcur = q->front->next;

88while

(pcur)

8993 printf("\n"

);94}95

96void top(linkqueue *q, int *val)

97103 *val = q->front->next->data;

104 }

main.c

1 #include "

queue.h"2

3int

main()

417 printf("\n"

);18 clear(&q);

1920

return0;

21 }

鏈式佇列的實現

typedef struct nodelinklist typedef structlinkqueue void setnull linkqueue p set a empty queue,front and rear pointer both point to a head node void q...

鏈式佇列的實現

include include define n 10 定義結點 typedef struct node node 定義佇列 typedef struct queue queue 判斷佇列是否為空 int empty queue queue 初始化佇列 queue init 入隊 int inque...

佇列的鏈式實現

今天最後老師問當棧的鏈式實現完成後,再實現佇列,是否會簡單?我回答,是的。我的理由很簡單,因為操作相同,其他的也應該類似,所以不會太難。至於實現之後,我的感受是怎麼樣的,我留在最後再說,順便總結一下。下面是標頭檔案 ifndef linklistqueue h define linklistqueu...