- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主要内容 普通高等教育“十一五”国家级规划教材 第2章 线性表 2.1 线性表的定义和顺序存储 2.2 线性表的运算 2.3 栈 返回目录 2.4 队列 2.5 字符串 线性表(linear list)是具有相同数据类型的n(n=0)个数据元素的有限序列,通常记为: (a1,a2,… ai-1,ai,ai+1,…an) 其中,a1称作表头元素,an称作表尾元素,n值为表长,n=0 时称为空表。 对任意一对相邻结点ai ,ai+1(1≤i<n)ai称为ai+1的直接前趋,ai+1称为ai的直接后继。而 a1 是表中第一个元素,它没有前趋,an 是最后一个元素无后继。 2.1.1 线性表的定义 2.1 线性表的定义和顺序存储 2.2 线性表运算的实现 2.2.1 线性表的基本操作 2.2.2 线性表上基本算法的实现 2.2.3 顺序表应用举例 作业 ⑴ 线性表初始化:InitList(L) 构造一个空的线性表L; ⑵线性表的销毁操作:destroyList(L) 销毁线性表L; ⑶线性表的清空:clearList(L) 将线性表L置为空表; ⑷线性表的判空操作:listIsEmpty(L) 判断表l是否为空,空返回真,否则返回假; ⑸求线性表长度:listLength(L) 求出线性表L中所含元素个数; ⑹取线性表中数据元素的值:getElem (L,i,e) 用e返回线性表L中的第i个数据元素的值 1=i=listLength(L); ⑺按值查找:locateElem(L,e) e是给定的一个元素,返回线性表L中第一个与e相等的数据元素的位序,若这样的元素不在则返回0; ⑻插入操作:listInsert(L,i,e) 在线性表L的第 i 个位置上插入一个值为 e 的新元素,使线性表长度增加1.1=i=listLength(L)+1; 2.2.1 线性表的基本操作 ⑼删除操作:listDelete(L,i,e) 在线性表L中删除序号为i的数据元素,并用e返回其值,使线性表长度减1; ⑽求前驱操作:priorElem(L,cur_e,pre_e) 用pre_r返回它的直接前驱元素,否则操作失败。cur_e是线性表L的一个数据元素; (11)求后继:nextElem(L,cur_e,next_e) 用next_e返回它的直接后继元素,否则操作失败。cur_e不是最后一个元素; (12)遍历线性表:listTraverse (L,visit()) 依次对L中的每个元素调用visit()函数,一旦visit()失败,则操作失败。Visit()是元素的访问函数。 2.2顺序表 2.2.3 顺序表应用举例 线性表的顺序存储结构是指把线性表中所有数据元素,按照其逻辑顺序依次存储到计算机存储器中从指定位置开始的一块连续的存储空间中。 例2-1 有两个线性表la和lb,类型为list。编写一个算法将它们合并成一个线性表la ,要求将lb接到la的后面,并且要求lb中的元素在la中已存在,则不把该元素合进去。 算法思路:把线性表la和lb的长度分别赋给n和m;从lb中的第一个元素起,对每一个元素与la中的每一个元素进行查找比较,若未找到则将这个lb元素插入到la表尾,否则继续比较下一个,直到lb中所有元素比较完,则合并完成;并应保证la表足够长。 算法如下 ◆ void link(list *la, list *lb) { int i,j,n,m; n= listLength( la);m=listLength(lb); for (i=1;i=m;i++ ) { x=lb-data[i]); j=locateElem( la, x); if(j==0) listInsert(la, la-last+1,x); } } 2.3链表3.1.1 单链表 data next typedef struct node { datatype data; struct node *next; }lnode ,*linklist ; 1. 单链表的定义和存储结构 定义:一个链表由n个结点组成,每个结点中有一个存储数据的值域和一个存储另一个结点地址的指针域。 通常用头指针head来标识一个单链表的开始头结点:表的第一个结点的data域不存数据 空表:head-next=NULL(也可用∧表示空NULL)
原创力文档


文档评论(0)