用两个栈实现队列
(1)如果栈B不为空,直接弹出栈B的数据。
(2)如果栈B为空,则依次弹出栈A的数据,放入栈B中,再弹出栈B的数据。
用切片
queue是先进先出的数据结构,利用切片的强大功能,可以很轻松地实现先进先出的功能
add(data element)直接在切片后面append()
remove(data element)查找元素在切片的位置然后将前部分和后面append起来
poll()直接做切片的切片
peek()返回切片的第一个数
代码:
package queue
type element interface {
equals(next element) bool
}
type FIFOQueue struct {
Inter []element
begin int
end int
//todo
}
func (q *FIFOQueue)add(data element) {
q.Inter =append(q.Inter,data)
return
}
func (q *FIFOQueue)remove(data element) bool {
if len(q.Inter)==0 {
return false
}else {
for i:= 0; i < len(q.Inter); i++ {
if q.Inter[i] == data {
q.Inter = append(q.Inter[:i],q.Inter[(i+1):]...)
}
}
}
return true
}
func (q *FIFOQueue)clear() {
q.Inter=make([]element,0)
}
func (q *FIFOQueue)poll() (element, bool) {
var re element
if len(q.Inter)==0 {
return nil, false
}else {
re =q.Inter[0]
q.Inter = q.Inter[1:]
}
return re, true
}
func (q *FIFOQueue)peek() (element, bool) {
var re element
if len(q.Inter)==0 {
return nil, false
}else {
re =q.Inter[0]
}
return re, true
}