資料結構 佇列

2022-05-16 08:04:41 字數 2958 閱讀 3307

佇列概念:

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

佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素稱為出隊。因為佇列只允許在一端插入,在另一端刪除,所以只有最早進入佇列的元素才能最先從佇列中刪除,故佇列又稱為先進先出(fifo—first in first out)線性表。

使用技巧:

普通的佇列可以使用手寫,也可以使用stl

我還是比較傾向於stl的

手寫的使用不太方便。

在一些情況下,我們還可能用到特殊的佇列

比如迴圈佇列

佇列結構的使用,很大一部分體現在廣搜上。

在使用廣搜解決問題時

要注意空間大小,

可能需要一種比較好的優化

比如:雙向廣搜

當然這個對在下來說有點太難了

一本通例題:

週末舞會:

1 #include2 #include3

using

namespace

std;

4int a[10001],b[10001],k1=1,k,i,f1=1,r1,f2=1

,r2;

5int

main()621

return0;

22 }

這就是乙個比較簡單的佇列使用

圍圈報數:

額又名:約瑟夫問題

迴圈佇列解決:

1 #include2 #include3

using

namespace

std;

4int

n,m;

5int

main()

618 printf("

%d ",a[j]);p++;

19 a[j]=a[a[j]];k=1;20

}21return0;

22 }

鍊錶:

1 #include2 #include3 #include4

using

namespace

std;

5struct

node;

9 node *head,*toil,*poi,*temp;

10int

main()

1126 poi=head->py ;

27 toil->py =head->py ;

28for(int i=1;i<=n;i++)

2939

return0;

40 }

這個鍊錶才90,應該是出特殊資料卡掉了乙個

嗯……後來我就屈服了

改用了迴圈佇列

家庭問題:

欸我就奇了怪了

這明明是乙個並查集

怎麼就混進了佇列裡面

1 #include2 #include3

using

namespace

std;

4int py[103];5

int rep[103];6

intx,y;

7 inline int spite(int

enterprise)812

void join(int c1,int

c2)13

17int

main()

1829

int ans=0;30

for(int i=1;i<=n;i++)

3134

int maxn=0;35

for(int i=1;i<=n;i++)

3640 cout<"

"<41 }

這個題其實是

並查集模板題——親戚

的魔改版

但我還是沒看出來怎麼用佇列

接下來是全是bfs了

bfs的迷宮問題

太多了就不多說了

奇怪的電梯:

1 #include2 #include3 #include4 #include5

using

namespace

std;

6struct

nodepy;

10int k[500

];11

bool f[500

];12

intn;

13int

s,e;

14int bfs(int

l)15

39if(i==2)40

4950}51

}52return -1;53

} 54

intmain()

55

連通塊:

1 #include2

using

namespace

std;

3const

int n = 110;4

const

int flag[4][2]=,,,};

5int a[n][n],queue[n * n][2];6

intn, m, ans;

7bool

p[n][n];

8void bfs(int x,inty)9

26}27}

28int

main()

2940 cout<'\n'

;41return0;

42 }

總體來說

佇列算是目前比較基礎的資料結構

只有基礎紮實

以後做綜合性大題時

才不會一臉懵

-end-

資料結構 佇列

一 佇列的迴圈陣列實現。1 初始化 空佇列。令rear front 0。2 入佇列 約定rear指向佇列尾元素的下乙個位置。入佇列時,先判斷佇列是否已滿,而後將array rear x 然後rear 3 出佇列 約定front指向佇列的首元素位置。出佇列時,先判斷佇列是否為空,而後返回隊首元素re ...

資料結構 佇列

資料參考自 資料結構c 語言描述 佇列是一種先進先出的資料結構,這與棧正好相反。下例是簡單的queue實現 queue.h檔案 ifndef queue h define queue h include include 資料元素結構 自定義 struct datatype 佇列元素最大數 const...

資料結構 佇列

code for fun created by dream whui 2015 1 25 include stdafx.h include include using namespace std define true 1 define false 0 define ok 1 define erro...