字符串的层次关系
来源:互联网 发布:mac搜狗五笔组词 编辑:程序博客网 时间:2024/05/22 15:12
例如给一个字符串(aaaa(bbbb(cccc,dddd),eeee(ffff))),表示各个人之间的领导关系。
如 aaaa是bbbb和eeee的领导,bbbb是cccc和dddd的领导。
#include<iostream>#include<string>using namespace std;typedef struct{string name; int parent;}Node;int search(Node tree[100],int count,string s){int i; for(i=0;i<count;i++)if(tree[i].name==s)break;if(i==count)return -1;elsereturn i;}int main(){string str;while(1){cout<<"请输入一个含有关系的字符串"<<endl;cin>>str;if(str=="0")break;Node tree[100];int countree=0;int i,j,k,m,n;string str2[100];int len=0;for(i=0;i<100;i++)tree[i].parent=-1;for(i=0;i<str.size();i++)//11{if(str[i]=='('||str[i]==','||str[i]==')'){//将s1初始化为字符str[i]的一个副本 string s1(1,str[i]);//string s4(n,'c'); 将s4 初始化为字符'c'的n个副本str2[len]=s1;//记录特殊符号的位置 str2[0]=(; str2[1]=(; str2[2]=(; str2[3]=,;str2[4]=); str2[5]=,;str2[6]=(;str2[7]=);str2[8]=);str2[9]=);len++;}else{string temp;j=0;for(;i<str.size();i++){if(str[i]=='('||str[i]==','||str[i]==')'){ i--;break;}else{temp.insert(temp.size(),1,str[i]);//temp=aaaa; temp=bbbb;temp=cccc;temp=dddd;temp=eeee;temp=ffff;j++;}}str2[len]=temp; // str2[1]=aaaa; str2[2]=bbbb;str2[3]=cccc;str2[4]=dddd;str2[5]=eeee;str2[6]=ffff;len++;tree[countree].name=temp;//tree[0].name=aaaa; tree[1].name=bbbb;tree[2].name=cccc;tree[3].name=dddd;tree[4].name=eeee;tree[5].name=ffff;countree++;}}//11string stack[100];int top=-1;for(i=0;i<len;i++)//22{if(str2[i]!=")"){top++;stack[top]=str2[i];//stack[0]=(;stack[1]=(;stack[2]=(;stack[3]=,;}else{j=top;while(j>0&&stack[j]!="(")j--;if(j==0)goto label1;n=search(tree,countree,stack[j-1]);for(k=j+1;k<=top;k++)if(stack[k]!=","){m=search(tree,countree,stack[k]);tree[m].parent=n;}top=j-1;}}//22label1:cout<<"请输入一个要查找的字符串"<<endl;cin>>str;string str3[100];int count=0;n=search(tree,countree,str);if(n!=-1){ str3[count]=str;count++;while(tree[n].parent!=-1){ str3[count]=tree[tree[n].parent].name; count++; n=tree[n].parent;}for(i=count-1;i>0;i--){cout<<str3[i]<<">";}cout<<str3[0]<<endl;;} else{cout<<"输入错误"<<endl;//exit(0);}}return 0;}/*(aaaa(bbbb(cccc,dddd),eeee(ffff)))*/
0 0
- 字符串的层次关系
- info()的层次关系
- UIView的层次关系
- 带有层次关系的css
- dom对象的层次关系
- Linux进程的层次关系
- Linux进程的层次关系
- Linux进程的层次关系
- ios--视图的层次关系
- ios--UITabBarController的层次关系
- 2.3 视图的层次关系
- 关于 视图的层次关系
- BOM层次和成本系统的关系
- Web安全性问题的层次关系
- seam 的一个层次关系图
- flex 中对象的层次关系
- Web安全性问题的层次关系
- 舞台(Stage)、SystemManager、Application的层次关系
- Vim快速移动光标至行首和行尾
- Js常用逻辑函数
- LEETCODE--Reverse Vowels of a String
- 关于Spring MVC中的表单标签库的使用
- Python调用.NET库
- 字符串的层次关系
- 随便写写
- headfirst设计模式(2)—观察者模式
- YDB场景精选
- 正则表达式
- c++ primer之变量与基本类型
- sudo 出现unable to resolve host 解决方法
- 前端高质量知识(三)-JS变量对象详解
- 高通kernel充电参数定义