資料結構之佇列 c語言版

2021-09-28 12:59:44 字數 3132 閱讀 3213

佇列(queue):在邏輯上是一種線性儲存結構。它有以下幾個特點:

1、佇列中資料是按照"先進先出(fifo, first-in-first-out)"方式進出佇列的。

2、 佇列只允許在"隊首"進行刪除操作,而在"隊尾"進行插入操作。

佇列通常包括的兩種操作:入佇列 和 出佇列。

底層可以由陣列(順序表),鍊錶實現。

基於陣列實現的單向佇列:

#include

#include

static

int*queue=

null

;//指向佇列

static

int count=0;

//元素數量

static

int maxsize=20;

//佇列容量

//建立佇列

int*

create_queue()

return queue;

//返回佇列

}//判空

intempty()

return0;

}//判滿

intfull()

return0;

}//入隊

void

enqueue

(int e)

queue[count++

]=e;

printf

("enqueue successful!!\n");

}//出隊

intdequeue()

int n=queue[0]

;for

(int i=

0;i) count--

;return n;

}//遍歷

void

display()

printf

("遍歷結束\n");

}//銷毀佇列

void

destory()

printf

("destory!!!");

}

主函式:

int

main()

輸出:

enqueue successful!!

enqueue successful!!

enqueue successful!!

enqueue successful!!

enqueue successful!!

enqueue successful!!

佇列有6個元素

the data is 2

the data is 8

the data is 108

the data is 99

the data is 9

the data is 4

遍歷結束

佇列有4個元素

the data is 108

the data is 99

the data is 9

the data is 4

遍歷結束

destory!!!

基於鍊錶實現的單向佇列

#include

#include

typedef

struct queue

queue;

static

int count=0;

//數量

static queue *head=

null

;//隊首

static queue *tail=

null

;//隊尾

//節點初始化

queue *

init()

//建立佇列

queue *

create_queue()

count++

;return head;

}//判空

intempty()

return0;

}//入隊

void

enqueue

(int e)

//出隊

intdequeue()

queue *p=head->next;

int n=p->data;

head->next=p->next;

free

(p);

count--

;printf

("dequeue!!\n");

return n;

}//遍歷

void

display()

printf

("佇列中有%d個元素\n"

,count)

; queue *p=head->next;

for(

int i=

1;i)printf

("display close!\n");

}

主函式:

int

main()

輸出:

enqueue!

enqueue!

enqueue!

enqueue!

enqueue!

enqueue!

佇列中有7個元素

the data is 2

the data is 8

the data is 108

the data is 99

the data is 9

the data is 4

display close!

dequeue!!

dequeue!!

佇列中有5個元素

the data is 108

the data is 99

the data is 9

the data is 4

display close!

資料結構與演算法學習目錄

資料結構之佇列(C語言版)

佇列的鏈式儲存結構 總結佇列 是只允許在一端進行插入操作,而在另一端進行刪除操作。可以是表頭,也可以是表尾 我們可以看到,佇列其實也是線性表的一種,佇列的意思其實就和他的名字一樣,他的儲存特點就像乙個一堆資料排隊一樣,先排到隊裡面的資料就先出來 first in first out 簡稱fifo。允...

資料結構(C語言版) 佇列

1 佇列 在表的一端插入,表的另一端刪除,允許插入的一端為隊尾,允許刪除的一端為隊頭。先進先出fifo。2 佇列的基本操作 initqueue q 構造空佇列 destroyqueue q 銷毀佇列 clearqueue q 清空佇列 queueempty q 判斷佇列是否為空 queuelengt...

資料結構(C語言版)

用棧實現數字的進製轉換 10轉8 棧 限定只能在表尾進行插入或者刪除操作的線性表 特點 先進後出 儲存表示方法 順序棧和鏈棧 本文用的順序棧 實現 readonly name code class c include include define stack init size 100 儲存空間初始...