#include "LinkQueueAlgo.h"
void ShowMenu() {
cout << "========= 队列的实现及应用 =========" << endl;
cout << "1. 初始化队列(使用以下功能前,务必先初始化) " << endl;
cout << "2. 销毁队列" << endl;
cout << "3. 清空队列" << endl;
cout << "4. 判断是否为空队列" << endl;
cout << "5. 求队列长度" << endl;
cout << "6. 取队头元素" << endl;
cout << "7. 入队" << endl;
cout << "8. 出队" << endl;
cout << "9. 遍历队列" << endl;
cout << "0. 退出" << endl;
cout << "请输入你的选择:";
}
void ExitEnter() {
cout << "-------------------------------" << endl;
system("pause");
system("cls");
}
int main() {
LinkQueue Q;
QElemType e;
int numF = 9; //菜单选项数量
int choice;
do {
ShowMenu();
cin >> choice;
while (choice < 0 || choice>numF || cin.fail())
{
system("cls");
cin.clear();
cin.ignore();
ShowMenu();
cin >> choice;
}
switch (choice) {
case 1: {
// 初始化队列
system("cls");
if (InitQueue(Q)) cout << "队列初始化成功" << endl;
else cout << "初始化失败" << endl;
ExitEnter();
break;
}
case 2: {
// 销毁队列
system("cls");
if (DestroyQueue(Q)) cout << "销毁队列成功,请初始化队列后继续使用下面的功能" << endl;
else cout << "销毁队列失败" << endl;
ExitEnter();
break;
}
case 3: {
// 清空队列
system("cls");
if (ClearQueue(Q)) cout << "清空队列成功" << endl;
ExitEnter();
break;
}
case 4: {
// 判断是否为空队列
system("cls");
if (QueueEmpty(Q)) cout << "为空队列,可使用“入队”功能添加元素" << endl;
else cout << "队列不为空" << endl;
ExitEnter();
break;
}
case 5: {
// 求队列长度
system("cls");
int l = QueueLength(Q);
cout << "队列长度为:" << l << endl;
ExitEnter();
break;
}
case 6: {
// 取队头元素
system("cls");
if (GetHead_Q(Q, e)) {
cout << "取队头元素成功" << endl;
cout << "队头元素为:" << e.num << endl;
}
else cout << "取队头元素失败" << endl;
ExitEnter();
break;
}
case 7: {
// 入队
system("cls");
cin.ignore();
string s;
cout << "不断入队,入队元素用空格隔开,比如:1.2 3 2 8" << endl;
cout << "请输入需要入队的元素(double):";
getline(cin, s);
istringstream iss(s);
string s1;
double q;
while (iss >> s1) {
try {
q = stod(s1);
}
catch (const exception& e)
{
cout << s1 << ":非数字,跳过" << endl;
continue;
}
e.num = q;
if (EnQueue(Q, e)) cout << q << ":入队成功" << endl;
else cout << q << ":入队失败" << endl;
}
ExitEnter();
break;
}
case 8: {
// 出队
system("cls");
if (DeQueue(Q, e)) {
cout << "出队成功" << endl;
cout << "出队元素为:" << e.num << endl;
}
else cout << "出队失败" << endl;
ExitEnter();
break;
}
case 9: {
// 遍历队列
system("cls");
if (QueueTraverse(Q))cout << "\n遍历成功" << endl;
else cout << "遍历失败" << endl;
ExitEnter();
break;
}
case 0: {
cout << "-------------------------------" << endl;
cout << "感谢使用,再见!" << endl;
break;
}
default:
system("cls");
cout << "输入无效,请重新选择!" << endl;
break;
}
} while (choice != 0);
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
适用数据结构课程,大学生必备资源。 LinkQueueAlgo.h 链表队列算法实现,包含队列的基本操作接口(如初始化、清除、添加/删除等)。 LinkQueueDef.h 定义队列数据结构(队列节点和队列指针)、公共类型和全局变量,为实现者提供接口。 pubuse.h 提供公共使用功能,包含预处理宏、类型声明和一些常用函数定义,供其他模块引用。 LinkQueueUse.cpp 应用层程序示例,使用自定义的 LinkQueue 类来实现队列的操作,通过交互式菜单演示队列的基本功能。 总结: 程序整体功能是使用链表实现的队列数据结构,并提供一系列操作(初始化、插入、删除、查看长度等),并通过LinkQueueUse.cpp中的实际示例展示了队列在控制台应用中的操作和使用。 此项目包含一系列文件,使用链表实现的LinkQueue数据结构以及相关的头文件,提供基础操作接口,并通过LinkQueueUse.cpp展示如何在实际应用中创建和使用这个队列。
资源推荐
资源详情
资源评论
收起资源包目录
数据结构-队列.zip (8个子文件)
数据结构-队列.vcxproj.filters 1KB
LinkQueueAlgo.h 2KB
pubuse.h 717B
LinkQueueDef.h 245B
数据结构-队列.vcxproj 7KB
数据结构-队列.vcxproj.user 168B
LinkQueueUse.cpp 4KB
数据结构-队列.sln 1KB
共 8 条
- 1
资源评论
“猿”谋人
- 粉丝: 366
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功