用于存放学校的作业便于复习。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.8 KiB

  1. //
  2. // Created by 423A35C7 on 2023-11-12.
  3. //
  4. // 14:55
  5. // 16:57
  6. #include "view.cpp"
  7. int main() {
  8. // 创建二叉树
  9. BiTree bi_tree;
  10. // 父节点编号
  11. int parent = 0;
  12. // 子节点队列
  13. std::queue<std::string> children;
  14. // 文本
  15. std::string text;
  16. // 文本长度
  17. text.reserve(100);
  18. // 临时变量
  19. int temp;
  20. // 错误信息
  21. std::string error_message;
  22. // 重新输入
  23. next_input:
  24. // 清屏
  25. clear_screen();
  26. // 输出二叉树
  27. output(bi_tree.head, 1, 1);
  28. // 移动光标到指定位置
  29. moveto(100, 1);
  30. // 输出提示信息
  31. std::cout << error_message << std::endl << "输入整数编号和字符串文本,空格分隔,输入单个非数字字符表示结束:" << std::endl;;
  32. // 循环输入
  33. while (std::cin >> parent) {
  34. // 如果编号不存在
  35. if (parent >= bi_tree.length) {
  36. // 设置错误信息
  37. error_message = "输入的编号不存在,请重新输入:";
  38. // 忽略输入
  39. std::cin.ignore(1024, '\n');
  40. // 重新输入
  41. goto next_input;
  42. }
  43. // 循环输入
  44. while ((temp = std::cin.get()) > 0) {
  45. // 根据输入的值进行判断
  46. switch (temp) {
  47. // 换行符
  48. case '\n':
  49. // 如果文本不为空
  50. if (!text.empty()) {
  51. // 将文本添加到子节点队列中
  52. children.push(text);
  53. // 清空文本
  54. text.clear();
  55. }
  56. // 将父节点编号和子节点队列插入二叉树
  57. bi_tree.insert(parent, children);
  58. // 重新输入
  59. goto next_input;
  60. // 空格
  61. case ' ':
  62. // 如果文本不为空
  63. if (!text.empty()) {
  64. // 将文本添加到子节点队列中
  65. children.push(text);
  66. // 清空文本
  67. text.clear();
  68. }
  69. break;
  70. // 其他字符
  71. default:
  72. // 将字符添加到文本中
  73. text.push_back(temp);
  74. break;
  75. }
  76. }
  77. }
  78. // 添加节点
  79. // children.emplace("张三");
  80. // children.emplace("李四");
  81. // children.emplace("王五");
  82. // bi_tree.insert(parent, children);
  83. // parent = 2;
  84. // children.emplace("师大");
  85. // children.emplace("统计");
  86. // children.emplace("计算机");
  87. // bi_tree.insert(parent, children);
  88. // parent = 0;
  89. // children.emplace("赵六");
  90. // bi_tree.insert(parent, children);
  91. return 0;
  92. }