双向链表习题精选.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
双向链表习题精选

/*8-16设链表上的结点的数据结构为: struct node{ int data; node *left,*right; }; 构造一棵二叉树,结点上的指针left和right分别指向该结点的左子树和右子树。 要求对任一结点,其左子树的所有结点上的数据data值均小于该结点的data值; 其右子树的所有结点上的数据data值均大于该结点的data值。 设输入的结点数据为:24 36 12 8 13 25 77构造一棵满足条件的二叉树。 */ 双向链表方法 插入算法要解决的几种情况 空链表,插入结点,作为链表的第1个结点; 在头结点的右侧; 在头结点的左侧; p2居左,p1居右,找到插入点; 插入尾部结点的左边,即批p2左边。 插入算法要解决的几种情况 空链表,插入结点,作为链表的第1个结点; 在头结点的右侧; 在头结点的左侧; p2居左,p1居右,找到插入点; 插入尾部结点的左边,即批p2左边。 插入算法要解决的几种情况 空链表,插入结点,作为链表的第1个结点; 在头结点的右侧; 在头结点的左侧; p2居左,p1居右,找到插入点; 插入尾部结点的左边,即批p2左边。 插入算法要解决的几种情况 空链表,插入结点,作为链表的第1个结点; 在头结点的右侧; 在头结点的左侧; p2居左,p1居右,找到插入点; 插入尾部结点的左边,即批p2左边。 搜索到的插入点位置有两种可能: 在头结点的左侧; p2居左,p1居右,找到插入点; 插入尾部结点的左边,即批p2左边 搜索到的插入点位置有两种可能: 在头结点的左侧; p2居左,p1居右,找到插入点; 插入尾部结点的左边,即批p2左边 打印输出 解二、不使用二级指针 参见源程序w8-16q.cpp * struct node{ int data; node * left; node * right; }; void main() { node *head,*tail; Create_sort(head,tail); Print(head,1); Print(tail,0); deletechain(head); cout\n; } void Create_sort(node **head,node **tail) { int a; node *p1; *head=*tail=0; cout产生一条有序链表,请输入数据,以-1结束:\n ; cina; while(a!=-1){ p1=new node; p1-data=a; insert(head,tail,p1); cina; } } void insert(node **head,node **tail,node *p) { node *p1,*p2; if(*head==0){ //空链表,插入链表,作为第1个结点 *head=*tail=p; p-left=0;p-right=0; return; } 必须有的语句。 void insert(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 ; } 必须有的语句。 void insert(node **head,node **tail,node *p) { node *p1,*p2; ……………. p1=p2=*head; while(p2-leftp2-datap-data) //查找插入点 { p1=p2;p2=p2-left; //p2居左,p1居右, } } while(p2-leftp2-datap-data) //查找插入点 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左边,即尾部 *tail=p;p-left=0; } void main() { node *head,*tail; Create_sort(head

文档评论(0)

tazhiq2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档