📄 例6_1.cpp
字号:
#include<iostream.h>
//建立二叉链表并查找指定的元素
typedef char elemtype;
struct bitree
{
elemtype data;
bitree *lchild,*rchild;
};
bitree *ptr;
int found=0;
char x;
bitree *create()//建立二叉链表
{ bitree *q[100]; //定义q数组作为队列存放二叉链表中结点,100为最大容量
bitree *s; //二叉链表中的结点
bitree *root ; //二叉链表的根指针
int front=1,rear=0; //定义队列的头、尾指针
char ch; //结点的data域值
root=NULL;
cout<<"请按完全二叉树输入结点值(不存在的结点用‘,’表示,‘#’表示结束"<<endl;
cin>>ch;
while(ch!='#') //输入值为#号,算法结束
{ s=NULL;
if(ch!=',') //输入数据不为逗号,表示不为虚结点,否则为虚结点
{ s=new bitree;
s->data=ch;
s->lchild=NULL;
s->rchild=NULL;
}
rear++;
q[rear]=s; //新结点或虚结点进队
if(rear==1) root=s;
else
{ if((s!=NULL)&&(q[front]!=NULL))
{ if(rear%2==0) q[front]->lchild=s; //rear为偶数,s为双亲左孩子
else q[front]->rchild=s;} //rear为奇数,s为双亲右孩子
if(rear%2==1) front++; //出队
}
cin>>ch;}
return root;
}
void traverse(bitree *t)
{ if ((t!=NULL)&&(!found))
if(t->data==x)
{found=1; ptr=t;}
else
{traverse(t->lchild); //在左子树中找
traverse(t->rchild); //在右子树中找
}
}
bitree *find(bitree*t,char x)
//在以T为根的二叉链表中,查找值为X的结点
{ptr=NULL;
traverse(t);
return ptr;
}
void main()
{ bitree *t,*y;
t=create();
cout<<"请输入要找的元素"<<endl;
cin>>x;
y=find(t,x);
if(y!=NULL)
cout<<y->data<<endl;
else
cout<<"not fount"<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -