数据结构讲义第2章-线性表.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (2)按值查找 Locate_LinkList(L,x) Linklist Locate_LinkList( LinkList L, elemtype x) /*在带头结点的单链表L中查找值为x的结点,找到后返回其指针,否则返回空*/ { p=L-next; while ( p!=NULL p-data != x) p=p-next; return p; } 3.插入 (1)后插结点:设p指向单链表中某结点,s指向待插入的值为x的新结点,将*s插入到*p的后面,插入示意图如右图。 操作如下: ①s-next=p-next; ②p-next=s; 注意:两个指针的操作顺序不能交换。 在*p之后插入*s p s × ① ② (2)前插结点:设p指向链表中某结点,s指向待插入的值为x的新结点,将*s插入到*p的前面,插入示意图如图。 首先要找到*p的前驱*q 然后再完成在*q之后插入*s: s-next=q-next; q-next=s; 图 在*p之前插入*s s × p q { Lnode * p,*s; p=Get_LinkList(L,i-1); /*查找第i-1个结点*/ if (p==NULL) { printf("参数i错");return 0; } /*第i-1个不存在不能插入*/ else { s=malloc(sizeof(LNode)); /*申请、填装结点*/ s-data=x; s-next=p-next; /*新结点插入在第i-1个结点的后面*/ p-next=s return 1; } (3)插入运算 Insert_LinkList(L,i,x) int Insert_LinkList( LinkList L, int i, datatype x) /*在单链表L的第i个位置上插入值为x的元素*/ 4. 删除 (1)删除结点:设p指向单链表中某结点,删除*p。 首先要找到*p的前驱结点*q, 然后完成指针的操作即可: q-next=p-next; free(p); 图2.15 删除*p p q × (2)删除运算:Del_LinkList(L,i) int Del_LinkList(LinkList L,int i) /*删除单链表L上的第i个数据结点*/ { LinkList p,s; p=Get_LinkList(L,i-1); /*查找第i-1个结点*/ if (p==NULL) { printf("第i-1个结点不存在");return -1; } else { if (p-next==NULL) { printf("第i个结点不存在");return 0; } else { s=p-next; /*s指向第i个结点*/ p-next=s-next; /*从链表中删除*/ free(s); /*释放*s */ return 1; } } 2.3.3 循环链表 带头结点的单循环链表 (a)非空表 a1 H   an … (b)空表 H 单循环链表的连接操作示例: p= R1 –next; /*保存R1 的头结点指针*/ R1-next=R2-next-next; /*头尾连接*/ free(R2-next); /*释放第二个表的头结点*/ R2-next=p; /*组成循环链表*/。 两个用尾指针标识的单循环链表的连接 R2 b1   bn … × a1   an … R1 × p 2.3.4 双向链表 双向链表结点的定义: typedef struct dlnode { ElemType data; struct dlnode *prior,*next; }DLNode,*DLinkList; prior next data 结构特点: 设p指向双向循环链表中的某一结点,即 p中是该结点的指针,则 p-prior-next = p = p-next-pri

文档评论(0)

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

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

1亿VIP精品文档

相关文档