实验二:实现链队列的各种基本运算的算法。 算法要求:编写一个程序 liqueue.cpp, 实现链队(假设栈中的元素类型 ElemType为char) 的各种基本运算,并在此基础上设计一个程序 exp
时间: 2024-10-19 12:16:05 浏览: 65
实验二的目标是创建一个基于链表实现的队列数据结构,主要包含插入(enqueue)、删除(dequeue)以及查看队首元素(front)等基本操作。链队列是一种线性数据结构,不像数组那样随机访问效率高,但是它的插入和删除操作在头部和尾部都相对较快。
以下是`liqueue.cpp`文件的主要部分,展示了如何通过结构体定义链队列、节点以及相应的函数实现:
```cpp
#include <iostream>
// 链队列节点定义
struct Node {
char data;
Node* next;
};
// 初始化空链队列
Node* createQueue() {
return nullptr;
}
// 插入元素到链队尾部
void enqueue(Node** head, char value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = nullptr;
if (*head == nullptr) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 删除并返回队首元素(如果队列非空)
char dequeue(Node** head) {
if (*head == nullptr) {
throw std::runtime_error("Queue is empty");
}
char value = (*head)->data;
Node* temp = *head;
*head = (*head)->next;
delete temp;
return value;
}
// 查看队首元素(但不删除)
char front(Node* head) {
if (head == nullptr) {
throw std::runtime_error("Queue is empty");
}
return head->data;
}
int main() {
// 创建队列实例
Node* queue = createQueue();
// 测试基本操作
enqueue(&queue, 'A');
enqueue(&queue, 'B');
std::cout << "Front element: " << front(queue) << "\n"; // 输出 'A'
std::cout << "Dequeued element: " << dequeue(&queue) << "\n"; // 输出 'B'
return 0;
}
```
阅读全文