⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 例6_1.cpp

📁 李根强的数据结构(C++描述)这本书源代码 很有用的 呵呵
💻 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 + -