94 lines
2.8 KiB
C++
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;
|
|
} |