c++带头结点的链队列的基本操作
时间: 2024-10-29 11:12:46 浏览: 66
在C++中,带头结点的单向链表实现的队列通常包含两个指针:头节点front和尾节点rear。基本操作主要包括:
1. **初始化**:创建一个空的链队列,即head和tail都指向NULL。
```cpp
Queue<int> queue; // 使用结构体或类实现Queue
queue.head = nullptr;
queue.tail = nullptr;
```
2. **入队(enqueue)**:将元素添加到队尾。如果队列已满,则需要考虑是否扩容。
```cpp
void enqueue(int value) {
Node* newNode = new Node(value); // 创建新节点
if (queue.tail == nullptr) {
queue.head = newNode;
queue.tail = newNode;
} else {
newNode->next = queue.tail;
queue.tail->next = newNode;
queue.tail = newNode;
}
}
```
3. **出队(dequeue)**:从队首移除并返回元素。如果队列为空,则抛出异常。
```cpp
int dequeue() {
if (queue.head == nullptr) {
throw std::runtime_error("Queue is empty");
}
int removedValue = queue.head->value;
Node* temp = queue.head;
queue.head = queue.head->next;
delete temp;
return removedValue;
}
```
4. **查看队首元素(peek)**:检查队首元素,但不删除它。同样处理空队列情况。
```cpp
int peek() const {
if (queue.head == nullptr) {
throw std::runtime_error("Queue is empty");
}
return queue.head->value;
}
```
5. **判断队列是否为空(empty)**:
```cpp
bool empty() const {
return queue.head == nullptr;
}
```
6. **队列长度(size)**:
```cpp
int size() const {
int count = 0;
Node* current = queue.head;
while (current != nullptr) {
count++;
current = current->next;
}
return count;
}
```
阅读全文