SharedSchoolSpace/作业/数据结构-金健/C++/第五章作业/main.cpp

94 lines
2.8 KiB
C++

//
// Created by 423A35C7 on 2023-11-12.
//
// 14:55
// 16:57
#include "view.cpp"
int main() {
// 创建二叉树
BiTree bi_tree;
// 父节点编号
int parent = 0;
// 子节点队列
std::queue<std::string> children;
// 文本
std::string text;
// 文本长度
text.reserve(100);
// 临时变量
int temp;
// 错误信息
std::string error_message;
// 重新输入
next_input:
// 清屏
clear_screen();
// 输出二叉树
output(bi_tree.head, 1, 1);
// 移动光标到指定位置
moveto(100, 1);
// 输出提示信息
std::cout << error_message << std::endl << "输入整数编号和字符串文本,空格分隔,输入单个非数字字符表示结束:" << std::endl;;
// 循环输入
while (std::cin >> parent) {
// 如果编号不存在
if (parent >= bi_tree.length) {
// 设置错误信息
error_message = "输入的编号不存在,请重新输入:";
// 忽略输入
std::cin.ignore(1024, '\n');
// 重新输入
goto next_input;
}
// 循环输入
while ((temp = std::cin.get()) > 0) {
// 根据输入的值进行判断
switch (temp) {
// 换行符
case '\n':
// 如果文本不为空
if (!text.empty()) {
// 将文本添加到子节点队列中
children.push(text);
// 清空文本
text.clear();
}
// 将父节点编号和子节点队列插入二叉树
bi_tree.insert(parent, children);
// 重新输入
goto next_input;
// 空格
case ' ':
// 如果文本不为空
if (!text.empty()) {
// 将文本添加到子节点队列中
children.push(text);
// 清空文本
text.clear();
}
break;
// 其他字符
default:
// 将字符添加到文本中
text.push_back(temp);
break;
}
}
}
// 添加节点
// children.emplace("张三");
// children.emplace("李四");
// children.emplace("王五");
// bi_tree.insert(parent, children);
// parent = 2;
// children.emplace("师大");
// children.emplace("统计");
// children.emplace("计算机");
// bi_tree.insert(parent, children);
// parent = 0;
// children.emplace("赵六");
// bi_tree.insert(parent, children);
return 0;
}