八、佇列
鏈式佇列 鍊錶實現
隊尾: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...