实现一个顺序存储的队列代码
时间: 2024-06-13 09:05:56 浏览: 18
以下是一个基于数组实现的顺序队列的代码实现,包括新建队列、元素入队、元素出队、队列是否为空/为满等操作:
```go
type ArrayQueue struct {
q []interface{}
capacity int // 队列容量
head int // 队头指针
tail int // 队尾指针
}
// 新建队列
func NewArrayQueue(n int) *ArrayQueue {
return &ArrayQueue{
q: make([]interface{}, n),
capacity: n,
head: 0,
tail: 0,
}
}
// 元素入队
func (q *ArrayQueue) Enqueue(v interface{}) bool {
if q.tail == q.capacity { // 队列已满
return false
}
q.q[q.tail] = v
q.tail++
return true
}
// 元素出队
func (q *ArrayQueue) Dequeue() interface{} {
if q.head == q.tail { // 队列为空
return nil
}
v := q.q[q.head]
q.head++
return v
}
// 队列是否为空
func (q *ArrayQueue) IsEmpty() bool {
return q.head == q.tail
}
// 队列是否已满
func (q *ArrayQueue) IsFull() bool {
return q.tail == q.capacity
}
```
使用示例:
```go
q := NewArrayQueue(5)
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
q.Enqueue(4)
q.Enqueue(5)
fmt.Println(q.Enqueue(6)) // 输出:false,队列已满
fmt.Println(q.Dequeue()) // 输出:1
fmt.Println(q.Dequeue()) // 输出:2
fmt.Println(q.Dequeue()) // 输出:3
fmt.Println(q.Dequeue()) // 输出:4
fmt.Println(q.Dequeue()) // 输出:5
fmt.Println(q.Dequeue()) // 输出:nil,队列已空
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)