注释写的很详细了,就直接上代码吧。

#include<iostream>
#include<string>
#include<stack>
#include<vector> using namespace std;struct Node
{char data;         //数据 int parent;            //双亲指针
};
void createPTree_gen(vector<Node> &T,string G)
{stack<int>stk;           //栈顶存放当前要处理的子树双亲的下标 int k = -1;                //k表示已经存放的最后一个结点的下标初始为 -1 char ch;              //当前读入的字符G[i] for(int i = 0; i < G.length(); i++){ch = G[i];switch(ch){case '(':               //进入一颗子树 stk.push(k);   //把子树双亲下标存入栈        break;case ')':               //处理完一颗子树 stk.pop();        //把刚处理完的子树的双亲下标从栈顶弹出 break;case ',':              //子表内进行后续处理,跳过 break;default:                    //读入的不是 '(' ')' ','  而是结点 Node newNode;       //临时的结点,用于存放新的结点的数据  newNode.data = ch; //存放结点data  if(stk.empty())   newNode.parent = -1; //只有第一个结点刚进才会栈空,其余结点不会 else                      {                       //不是第一个结点,它双亲的下标在栈顶 newNode.parent = stk.top();     }T.push_back(newNode);      //把新的结点加到树的后面k++;         }}
}
void printPTree(vector<Node>T)
{stack<int>stk;cout<<T[0].data;     //特别处理第一个结点 stk.push(-1);for(int i = 1; i < T.size(); i++){if(!stk.empty())   {if(T[i].parent > stk.top())             //进入子树 {cout<<"(";stk.push(T[i].parent);} else if(T[i].parent == stk.top())       //属于同一个子树 {cout<<","; }else                                 //返回上一层 {cout<<"),";stk.pop();}}cout<<T[i].data;}cout<<")"<<endl;       //特别处理最后一个结点
}
int main()
{string G = "A(B(E(K,L),F),C(G),D(H(M),I,J))";vector<Node>T;createPTree_gen(T,G);for(int i = 0; i < T.size(); i++){cout<<"T["<<i<<"].data is "<<T[i].data<<"  parent is :"<<T[i].parent<<endl; } printPTree(T);
}

输入广义表建立双亲表示的树and给定双亲表示的树输出广义表表示的树相关推荐

  1. 3.40 OrCAD输出网表出现“Duplicate Pin Name”错误时应该怎么处理?OrCAD输出网表出现“Illegal character”错误时应该怎么处理?

    笔者电子信息专业硕士毕业,获得过多次电子设计大赛.大学生智能车.数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究.对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验,共同 ...

  2. c语言建立线性表输入,c语言 建立线性表 链式

    1.实验目的及要求 通过本实验,进一不了解线性表的操作,熟悉线性表的运算,了解链式存储结构的实现方法和在链式存储条件下实现线性的相关操作. 2.实验内容 用C 语言设计在链式存储结构下,建立.插入.删 ...

  3. 大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 21

    大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 211 第 ...

  4. [python刷题模板] 珂朵莉树 ODT (基于支持随机访问的跳表

    [python刷题模板] 珂朵莉树 ODT (基于支持随机访问的跳表) 一. 算法&数据结构 1. 描述 2. 复杂度分析 3. 常见应用 4. 常用优化 二. 模板代码 0. 区间推平(lg ...

  5. 【编译原理笔记15】运行存储分配概述,静态存储分配,栈式存储分配,调用序列和返回序列,非局部数据的访问,符号表,符号表建立

    本次笔记内容: 7-1 运行存储分配概述 7-2 静态存储分配 7-3 栈式存储分配 7-4 调用序列和返回序列 7-5 非局部数据的访问 7-6 符号表 7-7 符号表建立 本节课幻灯片,见于我的 ...

  6. 数据结构:通过hash表建立一个宝可梦图鉴管理系统

    1. 建立工程文件夹 bin.obj.src.include 2.创建主makefile文件 OBJS:=test.o pokemon.o CC:=gcc CFLAGS:=-c -g -Wall My ...

  7. 邻接表-建立无向图、无向网、有向图、有向网

    #include<stdio.h> #include<stdlib.h> #define MAX_VERTEX_NUM 20 #define OK  1 #define ERR ...

  8. 给Excel工作表建立目录

    有时候我们会在一个工作簿中建立很多工作表,怎样才能简单明了的管理工作表呢,当然能建一个目录最好了,这里我们就学习一种给工作表创建目录的方法. 1.在工作簿中新建一个工作表,命名为"目录&qu ...

  9. 邻接表建立图(c语言)

    邻接表建立图 有向图 无向图 邻接表存图进行拓扑排序 不得不说网上的真的是太乱了,看得我脑壳疼 自己写的可以,感觉好的话可以当成模板. 有向图 代码: #include<stdio.h> ...

最新文章

  1. Python:一篇文章掌握Numpy的基本用法
  2. 磨刀不误砍柴工——数据准备的过程与实践
  3. Qt高级——QTestLib单元测试框架
  4. EF context.SaveChanges()特点
  5. 2019年关于VM和Kubernetes的思考 | 技术头条
  6. linux 下脚本查看带宽 (不需要安装其他工具包)
  7. js-jquery-插件开发(一)
  8. OracleDBA之数据库管理
  9. Spring-boot-AnnotationConfigServletWebApplicationContext
  10. Qtcrreator 4 (Qt5.7) on rhel 7 x86_64 添加配置astyle,美化代码配置方法
  11. 关于php后台的知识,xfplay影音先锋画面声音不同步的处理教程 爱狐网 (‾◡◝)...
  12. MC9S12XEP100-RTI设置
  13. 基于遗传算法的新安江模型参数优化率定(二)
  14. python画人脸编程怎么写_如何在Python(GUI)中绘制人脸
  15. 业务消息中心系统设计与实现(一)
  16. http请求返回302处理方案
  17. 福州大学数学计算机学院,福州大学数学与计算机科学学院导师介绍:廖祥文
  18. 计算机网络分布线图学校,【案例分享】某学院新校区综合布线系统拓扑图
  19. sip注册流程 一步一光年_[已经解决]电信的SIP在网络电话上始终不能注册成功,何故?...
  20. 模板类的动态模板特化

热门文章

  1. python画条形图-python 中条形图绘制
  2. 零基础学python知乎-对于几乎是零基础的人,直接学 Python 编程合适吗?
  3. 学python能做什么-学完Python可以做什么?
  4. python编程入门经典百度云-python电子书学习资料打包分享百度云资源下载
  5. 全球最大语音识别公司Nuance的衰落与自我救赎
  6. ntp时间同步会导致mysql关闭吗_NTP 时间同步网络弱电系统安全监测平台研究
  7. 安川g7变频器说明书_【工业机器人入门课】安川机器人故障维修合集
  8. linux磁盘fio压力测试,fio命令 – 对磁盘进行压力测试和验证
  9. ★Python爬虫 ※ 入门详解
  10. jQuery 表单验证插件 jQuery Validation Engine 使用