头歌数据结构循环队列及链队列的基本操作博客里的C++具体代码
时间: 2024-09-28 10:16:32 浏览: 107
在头歌数据结构循环队列及链队列的基本操作的博客中[^2],虽然没有直接给出C++的具体代码,但我们可以基于概念描述来了解一些基础操作。以下是循环队列和链队列的一些典型操作:
**1. 循环队列(Circular Queue)**
循环队列通常用于有限大小的存储空间,当队列满时,新的元素会替换掉最早添加的元素,形成一个环形结构。
- **初始化/创建循环队列**:
```cpp
template <typename T>
class CircularQueue {
private:
int front, rear;
std::vector<T> queue;
// ...
};
```
- **入队(enqueue)**:
```cpp
void enqueue(T item) {
if (isFull()) {
rear = (rear + 1) % queue.size(); // 由于是循环队列,索引溢出时自动回滚到开始位置
}
queue[rear++] = item;
}
```
- **出队(dequeue)**:
```cpp
T dequeue() {
if (isEmpty()) {
return -1; // 或者抛异常,表示队列空
}
T item = queue[front];
front = (front + 1) % queue.size();
return item;
}
```
**2. 链队列(Linked Queue)**
链队列是由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。
- **初始化/创建链队列**:
```cpp
struct Node {
T data;
Node* next;
};
class LinkedListQueue {
private:
Node* front, *rear;
};
```
- **入队(enqueue)**:
```cpp
void enqueue(T item) {
Node* newNode = new Node{item};
if (!rear) {
front = rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
}
```
- **出队(dequeue)**:
```cpp
T dequeue() {
if (isEmpty()) {
return -1;
}
T item = front->data;
Node* temp = front;
front = front->next;
delete temp;
return item;
}
```
请注意,这只是一个简化版的代码示例,实际使用时可能需要考虑更多边界条件和错误处理。完整的代码会在博客中有详细阐述。
阅读全文
相关推荐


















