全部代码:

#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<queue> using namespace std;struct Node
{char data;struct Node* lchild, *rsibling;
};void createCSTree_gen(Node *&root,string G)       //创建树
{if(G.length() <= 0){root = NULL;return; }struct SNode{Node *ptr;int dir;    //dir = 0,左链,dir = 1,右链 };const int stackSize = 20;                     //这里用数组当栈下面方便点SNode stk[stackSize];  int top = -1;     //栈,置空 root = new Node();root->data = G[0];   root->lchild = root->rsibling = NULL; stk[++top].ptr = root;                      //根指针进栈 Node* p;char ch;for(int i = 1; i < G.length(); i++){ch = G[i];switch(ch){case '(':stk[top].dir = 0; break;            //下一个结点为左子女 case ')':top--; break;                case ',':stk[top].dir = 1; break;            //下一个结点为右兄弟 default:p = new Node();                //新结点 p->data = ch;   p->lchild = p->rsibling = NULL;if(top > -1)                //非根结点 {if(stk[top].dir == 0)         //作为左子女链接 stk[top].ptr->lchild = p;else                         //作为右兄弟链接 {stk[top].ptr->rsibling = p;top--;}} stk[++top].ptr = p;}}
}
void printChildAndSiblingTree(Node *root, int k)    // 打印树
{if (root != NULL){for (int i = 0; i < k; i++) cout << " ";      //  右移k个字符 cout << root->data << endl;                       //输出根结点data for (Node * p = root->lchild; p != NULL; p = p->rsibling)  {printChildAndSiblingTree(p, k + 5);           //输出根的子树 }}
}
int main()
{string G = "A(B(E(K,L),F),C(G),D(H(M),I,J))";  //广义表Node *root = NULL;createCSTree_gen(root,G);printChildAndSiblingTree(root,0);return 0;
}

输入广义表建立子女兄弟链表示的树相关推荐

  1. 输入广义表建立双亲表示的树and给定双亲表示的树输出广义表表示的树

    注释写的很详细了,就直接上代码吧. #include<iostream> #include<string> #include<stack> #include< ...

  2. java 广义表_java 输入广义表 生成二叉树 | 学步园

    今天我要分享我学习用广义表生成二叉树的代码 这里我参考了  张二青博主的一些知识 http://my.csdn.net/zhangerqing 下面我进行分析了  比如输入广义表  (有关字符串的定义 ...

  3. 2. 输入若干个学生信息(包括学号、姓名和某科成绩),输入学号为0时输入结束,建立一个单向链表,再输入一个成绩值,将成绩大于等于该值的学生信息输出。 输入输出示例: 1 Zhang 78 2 Wang

    输入若干个学生信息(包括学号.姓名和某科成绩),输入学号为0时输入结束,建立一个单向链表,再输入一个成绩值,将成绩大于等于该值的学生信息输出. 输入输出示例: 1 Zhang 78 2 Wang 80 ...

  4. 广义表之树的兄弟孩子表示法

    title: 广义表之树的兄弟孩子表示法 date: 2020-11-17 15:55:55 tags: 兄弟孩子广义表 二叉树 categories: 数据结构 用兄弟孩子广义表来表示二叉树 对比 ...

  5. 广义表的头尾链表存储表示(第五章 P115 算法5.5,5.6,5.8)

    /* 广义表的头尾链表存储表示 */typedef enum{ATOM,LIST}ElemTag; /* ATOM==0:原子,LIST==1:子表 */typedef struct GLNode{E ...

  6. 分层次的非线性结构——树(广义表)05

    包含子结构的线性结构,线性表的推广--广义表 广义表的定义 广义表定义 约定:为了区分原子和子表,书写时用大写字母表示子表,用小写字母表示原子. 广义表特性 广义表表示方法 用圆圈和方框分别表示表和单 ...

  7. c语言数据结构大作业,数据结构大作业——树(和广义表)

    数据结构大作业--树(和广义表) 以广义表形式输入一棵树,然后以合适的比例将这棵树展示出来 (如何构造一个广义表已经略去) 对于广义表化的树,我们采用的树节点类似二叉链表形式的存储. 首先设计结点内容 ...

  8. 数据结构之广义表的相关知识点

    一,广义表的基本概念: 广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广.即广义表中放松对表元素的原子限制,容许它们具有其自身结构(即可以有子表).它被广泛的应用于人工智能等领 ...

  9. 广义表的链式定义和基础操作

    广义表的定义 广义表(Lists,又称列表)是线性表的推广.线性表定义为n>=0个元素a1,a2,a3,-,an的有限序列.线性表的元素仅限于原子项,原子是作为结构上不可分割的成分,它可以是一个 ...

最新文章

  1. linux 加载u盘、光盘、软盘 mount使用指南
  2. 最重要的会计期间是_非会计专业考生如何备考注会?难度多大?
  3. 安卓突击:Android 动画有哪几种?
  4. hbase delete.deleteColumns问题
  5. IE从服务器上获取json后转为下载提示的bug
  6. vue-自主研发非父子关系组件之间通信的问题
  7. 6行代码!用Python将PDF转为word
  8. 前端学习(1763):前端调试值之性能分析的方法一
  9. LeetCode 457. 环形数组循环(暴力+快慢指针)
  10. TensorFlow HOWTO 2.1 支持向量分类(软间隔)
  11. 程序员的基本功:为什么非要用 Python 做数据分析?Excel 不好吗?
  12. jts116_JTS T 116-2019水运建设工程概算预算编制规定.pdf
  13. 翻翻git之---实用工具类Lazy(绝对的好东西,走过路过别错过)
  14. audio标签控制音量_audio 基本功能实现(audio停止播放,audio如何静音,audio音量控制等)...
  15. 寻声定位 matlab,春天里的小情趣
  16. 对于AI 既有期待也要思考
  17. 计算机听觉应用,计算机音乐系统和音乐听觉训练
  18. 在Ubuntu上安装Docker Engine
  19. 跟我做WinForm开发(2)-后台逻辑操作
  20. 富士康贫血100天:40万员工人均到手工资1932元

热门文章

  1. python处理excel表格-60万行的Excel数据,Python轻松处理
  2. python培训班靠谱吗-学python去哪个培训机构好?靠谱的python培训机构推荐
  3. python培训价目表-python培训费用多少?
  4. php和python-PHP和Python如何选择?或许可以考虑这三个问题
  5. python是什么-了解什么是Python面向对象(1)
  6. python做excel自动化-python操作excel让工作自动化
  7. 语音识别模块 LD3320
  8. 四叶草启动linux黑屏,四叶草剧场黑屏进不去解决方法一览
  9. bilibili解析接口_仿最新BiliBili客户端(已开源)
  10. 前端工程化/构建自动化