C語言中,佇列是什麼意思,有什麼用途

時間 2022-03-31 20:09:29

1樓:餘穎卿封詩

佇列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。

在佇列這種資料結構中,最先插入在元素將是最先被刪除;反之最後插入的元素將最後被刪除,因此佇列又稱為「先進先出」(fifo—first

infirst

out)的線性表。

佇列空的條件:front=rear

佇列滿的條件:

rear

=maxsize

佇列可以用陣列q[1…m]來儲存,陣列的上界m即是佇列所容許的最大容量。在佇列的運算中需設兩個指標:head,隊頭指標,指向實際隊頭元素的前乙個位置;tail,隊尾指標,指向實際隊尾元素所在的位置。

一般情況下,兩個指標的初值設為0,這時隊列為空,沒有元素。圖1

(a)畫出了乙個由6個元素構成的佇列,陣列定義q[1…10]。q(i)

i=3,4,5,6,7,8頭指標head=2,尾指標tail=8。佇列中擁有的元素個數為:l=tail-head現要讓排頭的元素出隊,則需將頭指標加1。

即head=head+1這時頭指標向上移動乙個位置,指向q(3),表示q(3)已出隊。見圖1

(b)。如果想讓乙個新元素入隊,則需尾指標向上移動乙個位置。即tail=tail+1這時q(9)入隊,見圖1

(c)。當隊尾已經處理在最上面時,即tail=10,如果還要執行入隊操作,則要發生"上溢",但實際上佇列中還有三個空位置,所以這種溢位稱為"假溢位"。

克服假溢位的方法有兩種。一種是將佇列中的所有元素均向低位址區移動,顯然這種方法是很浪費時間的;另一種方法是將陣列儲存區看成是乙個首尾相接的環形區域。當存放到n位址後,下乙個位址就"翻轉"為1。

在結構上採用這種技巧來儲存的佇列稱為迴圈佇列。

佇列和棧一樣只允許在斷點處插入和刪除元素。

迴圈隊的入隊演算法如下:

1、tail=tail+1;

2、若tail=n+1,則tail=1;

3、若head=tail尾指標與頭指標重合了,表示元素已裝滿佇列,則作上溢位錯處理;

4、否則,q(tail)=x,結束(x為新入出元素)。

2樓:瀧蝶牽子

其主要特點是先進先出,恐怕最主要的是訊息佇列吧、、、期待下樓有長篇專門介紹的~~~~

c語言中煉表與佇列有什麼區別?

3樓:可兒

c語言的鍊錶與佇列是兩種不同的概念:

鍊錶是一種資料的儲存方式,其儲存的資料在記憶體中是不連續的,採用指針對資料進行訪問;

佇列是一種資料結構,其特點是先進先出,後進後出;

佇列的儲存方式可以使用線性表進行儲存,也可以使用鍊錶進行儲存。

sqqueue的第乙個元素elemtype

*elem;其實是指向了乙個陣列,該陣列中儲存著型別為elemtype的元素,然後front和rear就標識了隊首和隊尾元素對應的陣列下標。

typedef

struct _pointpoint;

#defineelemtype

point//這個elemtype可以是任意你自己定義的結構,可以是結構體,也可以是簡單資料型別

elemtype

array[10]=;//這個是佇列的資料結構,在這裡是乙個point陣列

sqqueue

queue=;

queue.elem=array;//這樣array中的元素就是queue中的元素了。

queue.front=queue.rear=queue.size=0;

c語言中,佇列是什麼意思,有什麼用途

4樓:

佇列是一種特殊的線性表。

佇列一種可以實現「先進先出」的儲存結構,即「一端入,一端出」,隊首(front)出隊,隊尾(rear)入隊,若front指向隊首,則rear指向隊尾最後乙個有效元素的下乙個元素;若rear指向隊尾,則front指向隊首第乙個有效元素的下乙個元素。

佇列特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。

擴充套件資料迴圈佇列各個引數的含義

1、佇列初始化front和rear的值都是零,初始化時佇列就是空的。

2、佇列非空front代表佇列的第乙個元素rear代表了最後乙個有效元素的下乙個元素。

3、佇列空front和rear的值相等,但是不一定是零。

5樓:匿名使用者

其主要特點是先進先出,恐怕最主要的是訊息佇列吧、、、期待下樓有長篇專門介紹的~~~~

6樓:匿名使用者

佇列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。

在佇列這種資料結構中,最先插入在元素將是最先被刪除;反之最後插入的元素將最後被刪除,因此佇列又稱為「先進先出」(fifo—first in first out)的線性表。

佇列空的條件:front=rear

佇列滿的條件: rear = maxsize

佇列可以用陣列q[1…m]來儲存,陣列的上界m即是佇列所容許的最大容量。在佇列的運算中需設兩個指標:head,隊頭指標,指向實際隊頭元素的前乙個位置;tail,隊尾指標,指向實際隊尾元素所在的位置。

一般情況下,兩個指標的初值設為0,這時隊列為空,沒有元素。圖1 ( a)畫出了乙個由6個元素構成的佇列,陣列定義q[1…10]。q(i) i=3,4,5,6,7,8頭指標head=2,尾指標tail=8。

佇列中擁有的元素個數為:l=tail-head現要讓排頭的元素出隊,則需將頭指標加1。即head=head+1這時頭指標向上移動乙個位置,指向q(3),表示q(3)已出隊。

見圖1 (b)。如果想讓乙個新元素入隊,則需尾指標向上移動乙個位置。即tail=tail+1這時q(9)入隊,見圖1 (c)。

當隊尾已經處理在最上面時,即tail=10,如果還要執行入隊操作,則要發生"上溢",但實際上佇列中還有三個空位置,所以這種溢位稱為"假溢位"。

克服假溢位的方法有兩種。一種是將佇列中的所有元素均向低位址區移動,顯然這種方法是很浪費時間的;另一種方法是將陣列儲存區看成是乙個首尾相接的環形區域。當存放到n位址後,下乙個位址就"翻轉"為1。

在結構上採用這種技巧來儲存的佇列稱為迴圈佇列。

佇列和棧一樣只允許在斷點處插入和刪除元素。

迴圈隊的入隊演算法如下:

1、tail=tail+1;

2、若tail=n+1,則tail=1;

3、若head=tail尾指標與頭指標重合了,表示元素已裝滿佇列,則作上溢位錯處理;

4、否則,q(tail)=x,結束(x為新入出元素)。

c語言中使用佇列 5

7樓:

如果你用vc,#include就好了,但是注意要加上using naemspace std;

我是當你用的c++的stl,stl中沒有真正的佇列和棧,他們都是通過對雙端佇列的改造得到的,所以包含的檔案可能和你想的不一樣。而且這些標頭檔案都沒有.h結尾!很特別

如果你不是vc,當我沒說

8樓:

c語言木有自帶的佇列,需要自己實現或者用第三方庫。

c++自帶!

9樓:匿名使用者

是c++ 的 stl庫,c語言是沒有的

10樓:狗熊開心點

佇列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。

在佇列這種資料結構中,最先插入在元素將是最先被刪除;反之最後插入的元素將最後被刪除,因此佇列又稱為「先進先出」(fifo—first in first out)的線性表。

佇列空的條件:front=rear

佇列滿的條件: rear = maxsize

佇列可以用陣列q[1…m]來儲存,陣列的上界m即是佇列所容許的最大容量。在佇列的運算中需設兩個指標:head,隊頭指標,指向實際隊頭元素的前乙個位置;tail,隊尾指標,指向實際隊尾元素所在的位置。

一般情況下,兩個指標的初值設為0,這時隊列為空,沒有元素。圖1 ( a)畫出了乙個由6個元素構成的佇列,陣列定義q[1…10]。q(i) i=3,4,5,6,7,8頭指標head=2,尾指標tail=8。

佇列中擁有的元素個數為:l=tail-head現要讓排頭的元素出隊,則需將頭指標加1。即head=head+1這時頭指標向上移動乙個位置,指向q(3),表示q(3)已出隊。

見圖1 (b)。如果想讓乙個新元素入隊,則需尾指標向上移動乙個位置。即tail=tail+1這時q(9)入隊,見圖1 (c)。

當隊尾已經處理在最上面時,即tail=10,如果還要執行入隊操作,則要發生"上溢",但實際上佇列中還有三個空位置,所以這種溢位稱為"假溢位"。

克服假溢位的方法有兩種。一種是將佇列中的所有元素均向低位址區移動,顯然這種方法是很浪費時間的;另一種方法是將陣列儲存區看成是乙個首尾相接的環形區域。當存放到n位址後,下乙個位址就"翻轉"為1。

在結構上採用這種技巧來儲存的佇列稱為迴圈佇列。

佇列和棧一樣只允許在斷點處插入和刪除元素。

迴圈隊的入隊演算法如下:

1、tail=tail+1;

2、若tail=n+1,則tail=1;

3、若head=tail尾指標與頭指標重合了,表示元素已裝滿佇列,則作上溢位錯處理;

4、否則,q(tail)=x,結束(x為新入出元素)。

計算機c語言中 什麼是棧和佇列

11樓:簡樹花晁己

位址就是~~~~

比如你申請乙個變數int

a=1;

那麼它就自動在記憶體中申請了乙個4位元組的位址給你使用~你可以使用&a來檢視位址~其實都是跟上面的一樣~不管怎麼樣申請了之後就需要釋放,但是c語言如果不是動態申請的~系統都會幫你自動優化哦~程式結束就會釋放~

12樓:安秀榮葛詞

棧(stack)是僅限制在表的一端進行插入和刪除運算的線性表,稱插入、刪除這一端為棧頂,另一端稱為棧底。表中無元素時為空棧。棧

的修改是按後進先出的原則進行的,我們又稱棧為lifo表(last

infirst

out)。通常棧有順序棧和鏈棧兩種儲存結構。

棧的基本運算有六種:

·構造空棧:initstack(s)

·判棧空:

stackempty(s)

·判棧滿:

stackfull(s)

·進棧:

push(s,x)

·退棧:

pop(s)

·取棧頂元素:stacktop(s)

在順序棧中有"上溢"和"下溢"的現象。

·"上溢"是棧頂指標指出棧的外面是出錯狀態。

·"下溢"可以表示棧為空棧,因此用來作為控制轉移的條件。

順序棧中的基本操作有六種:·構造空棧·判棧空·判棧滿·進棧·退棧·取棧頂元素

鏈棧則沒有上溢的限制,因此進棧不要判棧滿。鏈棧不需要在頭部附加頭結點,只要有鍊錶的頭指標就可以了。

鏈棧中的基本操作有五種:·構造空棧·判棧空·進棧·退棧·取棧頂元素

佇列(queue)是一種運算受限的線性表,插入在表的一端進行,而刪除在表的另一端進行,允許刪除的一端稱為隊頭(front),允許插入的

一端稱為隊尾(rear)

,佇列的操作原則是先進先出的,又稱作fifo表(first

infirst

out)

。佇列也有順序儲存和鏈式儲存兩種儲存結

構。佇列的基本運算有六種:

·置空隊:initqueue(q)

·判隊空:queueempty(q)

·判隊滿:queuefull(q)

·入隊:enqueue(q,x)

·出隊:dequeue(q)

·取隊頭元素:queuefront(q)

順序佇列的"假上溢"現象:由於頭尾指標不斷前移,超出向量空間。這時整個向量空間及佇列是空的卻產生了"上溢"現象。

為了克服"假上溢"現象引入迴圈向量的概念,是把向量空間形成乙個頭尾相接的環形,這時佇列稱迴圈佇列。

判定迴圈佇列是空還是滿,方法有三種:

·一種是另設乙個布林變數來判斷;

·第二種是少用乙個元素空間,入隊時先測試((rear+1)%m

=front)?

滿:空;

·第三種就是用乙個計數器記錄佇列中的元素的總數。

佇列的鏈式儲存結構稱為鏈佇列,乙個鏈佇列就是乙個操作受限的單鏈表。為了便於在表尾進行插入(入隊)的操作,在表尾增加乙個尾指

針,乙個鏈佇列就由乙個頭指標和乙個尾指標唯一地確定。鏈佇列不存在隊滿和上溢的問題。在鏈佇列的出隊演算法中,要注意當原隊中只

有乙個結點時,出隊後要同進修改頭尾指標並使佇列變空。

在c語言中《是什麼意思,在C語言中 是什麼意思

先說左移,左移就是把乙個數的所有位都向左移動若干位,在c中用 運算子.例如 int i 1 i i 2 把i裡的值左移2位 也就是說,1的2進製是000.0001 這裡1前面0的個數和int的位數有關,32位機器,gcc裡有31個0 左移2位之後變成000.0100,也就是10進製的4,所以說左移1...

c語言中un是什麼意思,C語言中 u n是什麼意思

會飛的兔子 u是無符號10進製整數,後是格式字串,n是換行的意思。u n用於格式化輸出語句中,如printf,sprintf,vsprintf,fprintf等。例 printf u n 19 則輸出為 19即換行標識。擴充套件資料定義c語言無符號整數 整型變數的分類 基本整型 int 短整型 sh...

c語言中02是什麼意思,C語言中 02X是什麼意思

表示以16進製制的格式輸出整數型別的數值,輸出域寬為2,右對齊,不足的用字元0替代。示例程式如下 include int main 執行結果為 0f00f 000f x 表示以十六進製制形式輸出 02 表示不足兩位,前面補0輸出 出過兩位,不影響舉例 printf 02x 0x123 列印出 123...

c語言中符號ltlt是什麼意思,c語言中符號 是什麼意思

聽不清啊 c語言中符號 是左移運算子。左移運算子,是乙個計算機用語。用來將乙個數的各二進位制位全部左移若干位。例如 將a的二進位制數左移2位,右補0。若a 15,即二進位制數00001111,左移2位得00111100,即十進位制數60 為簡單起見,用8位二進位制數表示十進位制數15,如果用16位二...

c語言中count是什麼意思,c語言count是什麼意思

count在來c語言只能說是乙個識別符號,它即不是關鍵字,也不是具有特殊作用的源某個控制符。一般來說,在c語言程式設計中定義乙個count變數或者字百面常量用於計數。比如下面的程式中用count統計度乙個整數中二進位制問表示中答二進位制位值為1的個數。在程式語言中,識別符號是用作程式的某一元素的名字...