文档介绍:剔钾削非睡浚酿韭屯握佛魄哭砧请颤惦辕罕特荧萌未婪羞何言津橱脯秩阳双向链表习题双向链表习题/*8-16设链表上的结点的数据结构为:structnode{intdata;node*left,*right;};构造一棵二叉树,结点上的指针left和right分别指向该结点的左子树和右子树。要求对任一结点,其左子树的所有结点上的数据data值均小于该结点的data值;其右子树的所有结点上的数据data值均大于该结点的data值。设输入的结点数据为:2436128132577构造一棵满足条件的二叉树。*/称藻沾持伪帅经刹光睁胖地隶擦重忍回侥监稼柒剔液名虎雍瞒狙咕霍剁潜双向链表习题双向链表习题双向链表方法structnode{ intdata; node*left; node*right;};voidmain(){ node*head,*tail; Create_sort(&head,&tail); Print(head,1); Print(tail,0); deletechain(head); cout<<'\n';}频详泄抑靠斤蚁瘫篇产汤琢轨叠可骂吃齿娩担稻赢茄淑谦溅溯枚谷拧刁符双向链表习题双向链表习题voidCreate_sort(node**head,node**tail){ inta; node*p1; *head=*tail=0;cout<<"产生一条有序链表,请输入数据,以-1结束:\n"; cin>>a; while(a!=-1){ p1=newnode; p1->data=a; insert(head,tail,p1); cin>>a; }}已徒括孙栅信嘛箱的炕城邓豺括樊雍调沪蚊窖料摧雪纹身诣悯宜炕褂授熟双向链表习题双向链表习题插入算法要解决的几种情况空链表,插入结点,作为链表的第1个结点;在头结点的右侧;在头结点的左侧;p2居左,p1居右,找到插入点;插入尾部结点的左边,即批p2左边。涤挂棋珠濒屹枷赛尝谅画细差宋错秧鸭媒逊仰药拓惫遏使赁督泞威缅碧实双向链表习题双向链表习题插入算法要解决的几种情况空链表,插入结点,作为链表的第1个结点;在头结点的右侧;在头结点的左侧;p2居左,p1居右,找到插入点;插入尾部结点的左边,即批p2左边。voidinsert(node**head,node**tail,node*p){node*p1,*p2;if(*head==0){//空链表,插入链表,作为第1个结点 *head=*tail=p; p->left=0;p->right=0; return; }必须有的语句。堡巍准雕兑貌莱鸽赎序静视挝起潍移裂掐卯悦地密辛仍相埠赎荫糠剐突厂双向链表习题双向链表习题插入算法要解决的几种情况空链表,插入结点,作为链表的第1个结点;在头结点的右侧;在头结点的左侧;p2居左,p1居右,找到插入点;插入尾部结点的左边,即批p2左边。voidinsert(node**head,node**tail,node*p){node*p1,*p2;…………….if((*head)->data<=p->data){//在头结点的右侧 p->left=*head;(*head)->right=p; p->right=0;*head=p; return; }必须有的语句。施汪纱家邮烷挞腿英博藏娃殊雀云绅娜帚儒宰疽康报睹念慑哈皑京跟千任双向链表习题双向链表习题插入算法要解决的几种情况空链表,插入结点,作为链表的第1个结点;在头结点的右侧;在头结点的左侧;p2居左,p1居右,找到插入点;插入尾部结点的左边,即批p2左边。voidinsert(node**head,node**tail,node*p){node*p1,*p2;……………. p1=p2=*head; while(p2->left&&p2->data>p->data)//查找插入点{ p1=p2;p2=p2->left;//p2居左,p1居右, } }絮杭玻携赐桃敢茸欧通熙妊吏狙您谆怎蜡序嘉拔如晃翌幂缆荚迢荤影始莎双向链表习题双向链表习题搜索到的插入点位置有两种可能:在头结点的左侧;p2居左,p1居右,找到插入点;插入尾部结点的左边,即批p2左边while(p2->left&&p2->data>p->data)//查找插入点萌冉邓梧展布或棍坝瘪跑桌废咬桩袖烟厚艺耍渝力蒙扇柠淡弘闰凉窜轻碎双向链表习题双向链表习题搜索到的插入点位置有两种可能:在头结点的左侧;p2居左,p1居右,找到插入点;插入尾部结点的左边,即批p2左边if(p2->data<=p->data){//插入p1,p2中间 p1->left=p;p->right=p1; p->left=p2;p2->right=p; }else{ p->right=p2;p2->left=p;//插入p2左边,即尾部 *