第02章 性表.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 线性表 2.1 线性表抽象数据类型 2.2 顺序表(线性表的顺序实现) 2.3 单链表 (2)头指针、头结点和首元结点的区别 (3)带头结点单链表和不带头结点单链表的比较 链表初始化 void ListInitiate(SLNode **head) /*初始化*/ { /*如果有内存空间,申请头结点空间并使头指针指向头结点*/ if (NULL == (*head = (SLNode *)malloc(sizeof(SLNode)))) { printf(ERROR); exit(1); } (* head)-next = NULL; } 求链表元素个数 int ListLength(SLNode *head) /*求链表元素个数*/ { SLNode *p = head; int size = 0; while (NULL != p-next) { p = p-next; size++; } return size; } 取数据元素 int ListGet(SLNode *head, int i, DataType *x) /* 取数据元素*/ { SLNode *p; int j; p = head; j = -1; while((NULL != p-next)(j i)) /*寻找数据位置*/ { p = p-next; j++; } if (j != i) { printf(Get Position ERROR!); return 0; } *x = p-data; return 1; } 撤销链表 撤销链表(续) 插入链表 插入链表(续) int ListInsert(SLNode *head, int i, DataType x) /*在第i个元素之前插入元素x*/ { SLNode *p,*q; int j; p = head; j = -1; while((NULL != p-next)(j i-1)) /*寻找插入位置*/ { p = p-next; j++; } if (j != i-1) … /*生成待插入结点(分配空间、初始化数据)*/ q = (SLNode *)malloc(sizeof(SLNode)); if (NULL == q) … q-data = x; q-next = NULL; /*将新生成节点插入刚才找到的插入位置p*/ q-next = p-next; p-next = q; } 链表删除 链表删除(续) 2.4 循环单链表 2.5 双向链表 2.6 静态链表 2.7 设计举例 作 业 P55 2-6, 2-7, 2-8, 2-9 补 :1) 如果把顺序表P29~32的内存分配改为动态的,那么主要需要修改那些地方? 2)列出在双向链表中删除一个结点的详细步骤,可以画图说明,并写出关键语句。 void main(void) { LinList int myList; int s[]={1,2,3,4,5,6,7,8,9,10},n=10; int temp; for(int i=0;in;i++) myList.Insert(s[i],i); myList.Delete(4); for(i=0;imyList.Size();i++) { temp=myList.GetData(i); couttemp ; } } 链凉叉阿奋矢刺渤在唁又底乙埂涪瓶冯马叹程泞衬团奸齿嗜项民豺烙摸斜第02章 线性表第02章 线性表 循环单链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针域指向整个链表的第一个结点,从而使链表形成一个环。它的优点是从链尾到链头比较方便。循环单链表也有带头结点和不带头结点两种结构。一个带头结点的循环单链表如下图示: a0 a1 an-1 … head head (a) 空链表 (b) 非空链表 擦部案觅哪否络淹竿哉蒋怕毁惋哉忠各计件物掸云奢烤冰饥补婿香鼻霓塌第02章 线性表第02章 线性表 双向链表是每个结点除后继指针域外还有一个前驱指针域,它有带头结点和不带头结点,循环和非循环结构,双向链表是解决查找前驱结点问题的

文档评论(0)

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

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

1亿VIP精品文档

相关文档