网站大量收购独家精品文档,联系QQ:2885784924

数据结构线性表.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ListNode *insert(ListNode *head, char ch, int i){ ListNode *p,*q,*s; int j=1; p=head; s=(ListNode *)malloc(sizeof(ListNode)); s-data=ch; if(head==NULL){ ; ; } else{ while(( )( )){ q=p; p=p-next; j++; } if(j==i){ if( ) { head=s; s-next=p; } else { ; ; } } else{ p-next=s; s-next=NULL; } } return(head); } (*) head=s s-next=NULL ji p!=NULL i==1 q-next=s s-next=p . 其它链表形式 (1)带头结点的单链表 (2)循环单链表 (3)双向链表 . 思考:普通链表操作的复杂性: a1 head a2 … an ^ 首元结点a1的地址存放在头指针变量head中; 其他结点的的地址存放在其前面结点的指针域中; 空表:head==NULL; 非空表:r-next==NULL; 2.空表与非空链表处理不一致。 1.第一个结点上的操作与其他结点的操作不一致, 需特殊处理; (1)带头结点的单链表 . 可在单链表的第一个结点之前附设一个结点,称之为头结点,解决上述复杂性。示意图如下: 头指针 头结点 首元结点 ^ a1 head a2 … info an head info ^ 空链表: . a1 head a2 … info an ^ 思考:带头结点的链表的优越性 首元结点a1的地址也存放在其前面结点的指针域中; 1.第一个结点上的操作与其他结点的操作一致, 无需特殊处理; 空表:head!=NULL; r-next==NULL; 与非空表一致。 2. 空表与非空链表处理一致。 head info ^ 空链表: . 尾插法建立带头结点的单链表 ListNode *CreateListR1(){ char ch; ListNode *head,*s,*r; head=r=NULL; while((ch=getchar())!=\n){ s=(ListNode *)malloc(sizeof(ListNode)); s-data=ch; s-next=NULL; if(head==NULL) head=s; else r-next=s; r=s; } return head; } head=r= (ListNode *)malloc(sizeof(ListNode)); . 3. 单链表的插入 . ListNode *insert(ListNode *head, char ch, int i){ ListNode *p,*q,*s; int j=1; p=head; s=(ListNode *)malloc(sizeof(ListNode)); s-data=ch; if(head==NULL){ head=s; s-next=NULL; } else{ while((ji)(p!=NULL)){ q=p; p=p-next; j++; } if(j==i){ if(head==p) head=s; else q-next=s; s-next=p; } else{ q-next=s; s-next=NULL; } } return(head); } p=head-next; q=head; . 4. 单链表的删除 . ListNode *del(ListNode *head, int i){ ListNode *p,*q;

文档评论(0)

细雨滴梧桐 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档