資料結構之佇列

2021-06-26 15:20:37 字數 1491 閱讀 4369

八、佇列

鏈式佇列   鍊錶實現

隊尾:rear     隊首:front

靜態佇列     陣列實現

必須是迴圈佇列

需要幾個引數來確定,各引數含義

1)   佇列初始化   front和rear值都是0

2)  佇列非空     front代表佇列第乙個元素

rear代表佇列最後乙個元素的 下乙個元素

3)佇列空       front和rear相等,(但是不一定是

0  

可以無)

8.1 佇列初始化

typedef struct queue

queue;

void main()

void init_queue(queue *pq)

8.2 入隊

1、  將值存入r所代表的位置

2、  錯誤的寫法:r=r+1;

正確的寫法:r=(r+1)%陣列長度

int full_queue(queue *pq)

else 

return 0;

}int input_queue(queue *pq,int val)

else

}8.3 出隊

出隊:1、將f處資料儲存(可無)

2、f=(f+1)%陣列長度

int out_queue(queue *qq,int *pval)

else

}8.4 如何判斷佇列滿

非空  f指向對頭

r指向隊尾的下乙個元素

n 個元素只放

n-1個元素,就認為其滿了。  此時r中是沒有存放資料的

if( (r+1)%陣列長度== f ) 

已滿else      

不滿int full_queue(queue *pq)

else 

return 0;

}8.5 如何判斷佇列空

int empty_queue(queue *qq)elsereturn 0;}8.6約瑟夫環(josephus) 出隊

void main()

; int b[12]=;

int pos=0; //初始位置為0,第乙個數字就是1了!!

int index=0;

int n=3; //間隔

int len=10;

int count=0;

int i;

for(i=0;i<10;i++)

printf("\n");

while(len>1) //2個數值仍然可以繼續,1個結束 }

}

資料結構之佇列

與棧相反,佇列是一種先進先出的線性表,它只允許在表的一端進行,而在另一端刪除元 素。在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。1 鏈佇列 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱為鏈佇列,乙個鏈佇列顯然需要兩個分別指示對頭和隊尾的指標 分別稱為頭指 針和尾指標 才能唯一確定。這裡...

資料結構之佇列

一 佇列的介紹 佇列 queue 是一種線性儲存結構。它有以下幾個特點 1 佇列中資料是按照 先進先出 fifo,first in first out 方式進出佇列的。2 佇列只允許在 隊首 進行刪除操作,而在 隊尾 進行插入操作。佇列通常包括的兩種操作 入佇列 和 出佇列。1.佇列的示意圖 佇列中...

資料結構之佇列

標籤 空格分隔 資料結構 佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。是一種先進先出 fifo first in first out...