队列的C/C++实现逻辑比较简单,用单链表实现队列的创建、入队、出队和判断队列是否为空操作,这里直接贴代码了。
/* 完整代码 */
#include <iostream>
using namespace std;
typedef struct queue {
int val;
struct queue* next;
}Queue;
void Init(Queue* ptr, int n) { //初始化队列
while (n --) {
Queue* temp = (Queue *)malloc(sizeof(Queue));
cin >> temp->val;
temp->next = NULL;
ptr->next = temp;
ptr = temp;
}
}
bool QueueEmpty(Queue* ptr) { //判断队列是否为空
if (ptr->next == NULL)
return true;
else
return false;
}
void Push(Queue* ptr, int item) { //入队
Queue* temp = (Queue *)malloc(sizeof(Queue));
temp->val = item;
temp->next = NULL;
while (ptr->next) {
ptr = ptr->next;
}
ptr->next = temp;
}
void Pop(Queue* ptr) { //出队
if (QueueEmpty(ptr)) {
cout << "队列为空,不能出队!" << endl;
return;
}else {
Queue* temp = ptr->next;
ptr->next = ptr->next->next;
free(temp);
}
}
void Show(Queue* ptr) { //遍历队列
cout << "队列遍历: " ;
while (ptr->next) {
cout << ptr->next->val << " ";
ptr = ptr->next;
}
cout << endl;
}
int main() {
int n;
cout << "请输入要插入的元素个数: ";
cin >> n;
Queue* front = (Queue *)malloc(sizeof(Queue)); //申请头结点
Init(front, n);
Show(front);
Push(front, 23);
Show(front);
Pop(front);
Show(front);
return 0;
}
运行结果:
请输入要插入的元素个数: 2
13 18
队列遍历: 13 18
队列遍历: 13 18 23
队列遍历: 18 23