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的個數。在程式語言中,識別符號是用作程式的某一元素的名字...