📄 test05_4.cpp
字号:
// { test05_4}
#include"listses.h"
lists L,La,Lb;
char ch;
int depth(lists L)
{
lists P;
int dep;
int h;
if (L==nil)
dep=0;
else if (L->tag==0)
dep=0;
else
{ h=0;
P=L->hp;
while (P!=nil)
{ h=Max(depth(P),h);
P=P->tp;
}
dep=h+1;
}
return dep;
}
void print_lists_node1(lists ls)
{lists p;
if (ls->tag==0)
cout<<ls->data;
else
{cout<<'(';
p=ls->hp;
while (p!=nil)
{ print_lists_node1(p);
if (p->tp!=nil)
cout<<',';
p=p->tp;
}
cout<<')';
}
}
void print_lists1( char title, lists ls)
{ cout<<title<<'=';
print_lists_node1(ls);
}
void Getchar1(char& c,string s,int& i)
{
while (i<strlen(s) && (s[i]==' '))
i=i+1;
if (i<=strlen(s) )
c=s[i];
else
c=' ';
i=i+1;
}
void Create1( lists& ls,char& c, string s, int& i,int level)
{ Getchar1(c,s,i); //{ ls:=nil;}
if (c==')')
if (level<1)
Error_exit("Error in string ");
else
ls=nil;
else if (c==',')
Create1(ls,c,s,i,level) ;
else if (c=='(') //{ and (level>1)}
{
ls=new node;
ls->tag=1;
Create1(ls->hp,c,s,i,level+1);
Create1(ls->tp,c,s,i,level);
}
else {
ls=new node;
ls->tag=0;
ls->data=c;
Create1(ls->tp,c,s,i,level);
}
}
void create_lists1(lists& ls,string s)
{ char c;
int i=0;
unsigned char s1[50]="";
unsigned char s2[50]="";
Ltrim(s,s1);
Rtrim(s1,s2);
strcpy(s,s2);
Getchar1(c,s,i);
ls=new node;
ls->tag=1;
ls->tp=nil;
ls->hp=nil;
if (c=='(')
Create1(ls->hp,c,s,i,1);
else
Error_exit("Error in string ");
}
main()
{
// {***main***}
create_lists(L,'L',"((a,b,c),d,(e,f,g))");
cout<<"depth(L)="<<depth(L)<<endl; // {Question 1}
create_lists(La,'A',"(((a,b,c)),d,(e,f,g))");
cout<<"A-tools disp ";
print_lists('A',La);
cout<<endl;
cout<<"\nA-user disp ";
print_lists1('A',La);
cout<<endl;
Wait(); // {Question 2}
create_lists(Lb,'B',"(((a,b,c)),d,(e,f,g))");
create_lists1(Lb,"(((a,b,c)),d,(e,f,g))");
cout<<"\nA-user create";
print_lists('B',Lb);
Wait(); // {Question 3}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -