#include <iostream>
#include <malloc.h>
using namespace std;
typedef int ElemType;
typedef struct QNode {
ElemType data;
struct QNode* next;
}QNode,*QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;
bool init(LinkQueue& Q) {
Q.front = Q.rear = new QNode;
Q.front->next = NULL;
return true;
}
bool insert(LinkQueue& Q) {
cout << "输入元素值:\n";
int i;
cin >> i;
QueuePtr p = new QNode;
p->data = i;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return true;
}
bool remove(LinkQueue& Q) {
if (Q.front == Q.rear) {
cout << "队列空\n";
return false;
}
QueuePtr q = Q.front->next;
int i;
i = q->data;
Q.front->next = q->next;
if (Q.rear == q) {//如果最后一个元素被删除,将尾指针指向头指针指向的地址
Q.rear = Q.front;
}
cout << "元素" << i << "被删除\n";
delete(q);
return true;
}
bool select(LinkQueue& Q) {
cout << "全部元素如下:\n";
while (Q.front->next != NULL) {
cout << Q.front->next->data << "\t";
Q.front = Q.front->next;
}
cout << endl;
return true;
}
bool update(LinkQueue& Q) {
return true;
}
int main() {
LinkQueue L;
init(L);
while (true)
{
cout << "请选择需要进行的操作\n0.退出\t1.插入\t2.查询\t3.删除\t4.修改\t\n";
int choice;
cin >> choice;
if (choice == 0)
{
break;
}
switch (choice)
{
case 1:insert(L); break;
case 2:select(L); break;
case 3:remove(L); break;
case 4:update(L); break;
default:break;
}
}
}
数据结构(c)队列的链式表示实现
最新推荐文章于 2021-05-20 08:05:20 发布