一、定義
1) 佇列是乙個有序列表,可以用陣列或者鍊錶實現
2) 遵循先進先出的原則
二、 非環形佇列
1、設計思路:
1)建立乙個陣列array,作為佇列的乙個字段;
2)front(前端位置)初始化為-1;
3) real,表示佇列尾部,初始化為-1
4) 完成佇列的基本查詢
addqueue //加入佇列
getqueue //取出元素
showqueue //顯示佇列
type queue struct
func
(this
*queue)
addqueue
(val int)
(err error)
this
.rear++
this
.arr[
this
.rear]
=val
return
}//增加佇列
func
(this
*queue)
showqueue()
遍歷了所有的資料,故錯誤
fmt.
println
("佇列當前的情況是:"
)for i:
=this
.front+
1;i<=
this
.rear;i++
fmt.
println()
}func
(this
*queue)
getqueue()
(val int,err error)
this
.front++
return
this
.arr[
this
.front]
,err
}func main()
forelse
case
"exit"
: os.
exit(0
)default
: fmt.
println
("沒有這個選項")}
}}
缺點:當資料滿的時候,不能取出來,也不能存進去
三、環形佇列
1、設計思路
1)(rear+1)%maxsize==front時候表示佇列滿了;(當rear在front的下方的時候)
2) rear == front 的時候表示隊列為空;
3) 初始化的時候rear =0,front=0;
4) 統計該佇列多少個元素(rear+maxsize-front)%maxsize;(可能出現rear在front上方的情況;
package main
import
("fmt"
"errors"
"os"
)type circlequeue struct
func
(this
*circlequeue)
push
(val int)
(err error)
this
.arr[
this
.rear]
=val
this
.rear=
(this
.rear+1)
%this
.maxsize
return
}func
(this
*circlequeue)
pop(
)(val int,err error)
val=
this
.arr[
this
.front]
this
.front=
(this
.front+1)
%this
.maxsize
return val ,err
}func
(this
*circlequeue)
show()
fmt.
println()
}func
(this
*circlequeue)
ispull
() bool
//判斷是否滿了
func
(this
*circlequeue)
isempty
() bool
//判斷是否為空
func
(this
*circlequeue)
num(
) int
//判斷返回了多少值
func main()
forelse
case
"show"
: queue.
show()
case
"get"
: val,err:
=queue.
pop(
)if err!=nil
else
case
"exit"
: os.
exit(0
)default
: fmt.
println
("沒有這個選項")}
}}
看完如果覺得對自己有幫助請點贊支援,謝謝 資料結構之佇列
八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...
資料結構之佇列
與棧相反,佇列是一種先進先出的線性表,它只允許在表的一端進行,而在另一端刪除元 素。在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。1 鏈佇列 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱為鏈佇列,乙個鏈佇列顯然需要兩個分別指示對頭和隊尾的指標 分別稱為頭指 針和尾指標 才能唯一確定。這裡...
資料結構之佇列
一 佇列的介紹 佇列 queue 是一種線性儲存結構。它有以下幾個特點 1 佇列中資料是按照 先進先出 fifo,first in first out 方式進出佇列的。2 佇列只允許在 隊首 進行刪除操作,而在 隊尾 進行插入操作。佇列通常包括的兩種操作 入佇列 和 出佇列。1.佇列的示意圖 佇列中...