佇列的順序儲存實現

2022-09-16 14:48:16 字數 3601 閱讀 5382

順序儲存佇列標頭檔案:

1

#pragma once

2 #include3 #include4

#define max_size 102456

//順序佇列結構體

7 typedef struct

seqqueue

8seqqueue;

1213

//初始化佇列

14 seqqueue*init_seqqueue();

15//

入隊16

void push_seqqueue(seqqueue* queue, void*value);

17//

出隊18

void pop_seqqueue(seqqueue*queue);

19//

返回隊首元素

20void* front_seqqueue(seqqueue*queue);

21//

返回隊尾元素

22void* back_seqqueue(seqqueue*queue);

23//

返回佇列長度

24int size_seqqueue(seqqueue*queue);

25//

清空佇列

26void clear_seqqueue(seqqueue*queue);

27//

銷毀佇列

28void free_seqqueue(seqqueue* queue);

順序儲存佇列實現檔案:

1 #include "

佇列順序儲存.h"2

//初始化佇列

3 seqqueue*init_seqqueue()410

11 queue->size = 0;12

for (int i = 0; i < max_size; ++i)

1316

17return

queue;18}

19//

入隊陣列左邊做隊頭

20void push_seqqueue(seqqueue* queue, void*value)

2126

27if (value ==null)

2831

32if (queue->size ==max_size)

3336

37 queue->data[queue->size] =value;

38 queue->size++;39}

40//

出隊41

void pop_seqqueue(seqqueue*queue)

4247

48if (queue->size == 0)49

5253

for (int i = 0; i < queue->size-1; ++i)

5457 queue->size--;58}

59//

返回隊首元素

60void* front_seqqueue(seqqueue*queue)

6166

67if (queue->size == 0)68

7172

return queue->data[0

];73}74

//返回隊尾元素

75void* back_seqqueue(seqqueue*queue);

76//

返回佇列長度

77int size_seqqueue(seqqueue*queue)

7883

84return queue->size;85}

86//

清空佇列

87void clear_seqqueue(seqqueue*queue)

8893

94 queue->size = 0;95

}96//銷毀佇列

97void free_seqqueue(seqqueue*queue)

98103

104for (int i = 0; i < max_size; ++i)

105108 queue->size = 0

;109

free

(queue);

110111 }

順序儲存佇列測試檔案:

1 #include"

佇列順序儲存.h

"2 #include

3 #include4 #include5

6#define m 8

7#define n 38//

資料元素結構體

9 typedef struct

person

10person;

1415

intmain()16;

22 person p2 = ;

23 person p3 = ;

24 person p4 = ;

25 person p5 = ;

2627

//入隊

28 push_seqqueue(queue, (person*)&p1);

29 push_seqqueue(queue, (person*)&p2);

30 push_seqqueue(queue, (person*)&p3);

31 push_seqqueue(queue, (person*)&p4);

32 push_seqqueue(queue, (person*)&p5);

3334

//返回隊首元素

35 person* temp = (person*)front_seqqueue(queue);

36 printf("

value: %s age: %d\n

", temp->name, temp->age);

3738

//出隊

39pop_seqqueue(queue);

4041

//返回隊首元素

42 temp = (person*)front_seqqueue(queue);

43 printf("

value: %s age: %d\n

", temp->name, temp->age);

4445

int size =size_seqqueue(queue);

46 printf("

長度%d\n

", size);

4748

//清空佇列

49clear_seqqueue(queue);

5051 size =size_seqqueue(queue);

52 printf("

長度%d\n

", size);

53//

銷毀佇列

54free_seqqueue(queue);

55return0;

56 }

測試結果:

佇列 迴圈佇列 的順序儲存實現

佇列的順序儲存實現 1 佇列 一端進,另一端出 佇列由兩個引數決定,front 頭 rear 尾 頭指標指向頭乙個元素,尾指標指向指向最後乙個元素的下一儲存單元 若陣列長度為n,當元素個數為n 1時就認為佇列已滿。r指向最後乙個空的元素空間。出隊 頭指標往上移動,入隊 尾指標向上移動,故 靜態佇列只...

c實現佇列的順序儲存

queue.c duizhanduilie 佇列的順序儲存結構 include define m 100 define qelemtype int 初始化佇列 void initialq int front,int rear 測試佇列是否為空 int emptyq int front,int rea...

佇列的順序 鏈式儲存實現

佇列 具有一定操作約束的線性表,只能在一端插入,在另一端刪除。特點 先來先服務,先進先出表 頭front,尾rear 順序儲存 1 define maxsize 儲存資料元素的最大個數 23 struct qnode 1213 typedef struct qnode queue 14 front ...