- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线性表的定义
3. 单链表上的查找运算 (1) 按值查找Locate(head,x) 在单链表head中,查找值为x的结点,若找到,返回它的地址,否则返回NULL。 (2) 按序号查找get(head,i) 在单链表head中查找第i个位置上的元素,若找到,则返回它的地址,否则返回NULL。 Link *Locate(link *head,elemtype x) { link *p; p=head-next; while((p!=NULL)(p-data!=x)) p=p-next; return p; } 算法的时间复杂度都为O(n)。 Link *get(link *head,int i) { int j; link *p; j=1; p=head-next; while((ji)(p!=NULL) { j++; p=p-next; } return p; } 算法的时间复杂度都为O(n)。 4. 单链表上的插入运算 若将x插入a和b 之间,插入结点的指针变化如图2-8所示。 * 第2章 线性表 数据结构(C++描述) 目录 2.1 线性表的定义及其运算 2.2线性表的顺序存储结构 2.3 线性表的链式存贮结构 结束放演 2.1 线性表的定义及其运算 2.1.1线性表的定义 1. 线性表的定义 线性表(linear list)是n(n≥0)个数据元素a1,a2,…an组成的有限序列。其中n 称为数据元素的个数或线性表的长度,当n=0时称为空表,n0时称为非空表。通常将非空的线性表记为(a1,a2,…,an),其中的数据元素ai(1≤i≤n)是一个抽象的符号,其具体含义在不同情况下是不同的,即它的数据类型可以根据具体情况而定,本书中,我们将它的类型设定为elemtype,表示某一种具体的已知数据类型。 2. 线性表的特征 从线性表的定义可以看出线性表的特征: (1 )??? 有且仅有一个开始结点(表头结点)a1,它没有直接前驱,只有一个直接后继; (2)? 有且仅有一个终端结点(表尾结点)an,它没有直接后继,只有一个直接前驱; (3)???? 其它结点都有一个直接前驱和直接后继; ( 4)元素之间为一对一的线性关系。 线性表是一种典型的线性结构,用二元组表示为: linear_list=(A,R) 其中 A={ai ∣1≤i≤n,n≥0,ai∈elemtype} R={r} r={ai,ai+1 ∣1≤i≤n-1} 对应的逻辑结构图如图2-1所示。 2.1.2 线性表的运算 常见线性表的运算有: 1.置空表 SETNULL(L)将线性表L置成空表 2. 求长度 LENGTH(L) 求给定线性表L的长度 3. 取元素 GET(L,i) 若1≤i≤length(L),则取第i个位置上的元素,否则取得的元素为NULL。 4.求直接前趋 PRI0R(L,X)求线性表L中元素值为X的直接前趋,若X为第一个元素,前驱为NULL。 5.求直接后继 NEXT(L,X)求线性表L中元素值为X直接后继,若X为最后一个元素,后继为NULL。 6.定位函数 LOCATE(L,X) 在线性表L中查找值为X的元素位置,若有多个值为X,则以第一个为准,若没有,位置为0。 7.插入 INSERT(L,X,i)在线性表L中第i个位置上插入值为X的元素。 8.删除 DELETE(L,i) 删除线性表L中第i个位置上的元素。 ? 2.1.3线性表的抽象数据类型描述 上述这些操作可用抽象数据类型描述为: ADT Linearlist is Data: 一个线性表L定义为L=(a1,a2,…,an),当L=( )时定义为一个空表 operation: void setnull(L) //将线性表L置成空表 int Length(L) //求给定线性表L的长度 elemtype Get(L,i) //取线性表L第i个位置上的元素 elemtype Prior(L,x) //求线性表L中元素值为X的直接前趋 elemtype Next(L,x) //求线性表L中元素值为X的直接后继 int Locate(L,x) //在线性表L中查找值为X的元素位置 void Insert(L,x,i) //在线性表L中第i个位置上插入值为X的元素 void Delete(L,i) //删除线性表L中第i个位置上的元素 END Linea
您可能关注的文档
- 第四章病因病机.ppt
- 第四章生活中的能源.doc
- 第四章糖和苷.ppt.ppt
- 第四章第二个十年的散文.ppt.ppt
- 第四章猪的育种-本站-德州学院.ppt
- 第四章细胞膜与细胞表面.doc.doc
- 第四章排球竞赛编排及裁判工作.ppt-地理教学论.ppt
- 第四章肿瘤.doc
- 第四章粉末涂料的涂装工艺-苏州绮联粉体涂料有限公司.doc
- 第四章聚合物的分子量及分子量分布.doc
- 2025四川南充市公路管理局南充市水务局遴选3人笔试备考题库附答案解析.docx
- 2025年清水河县事业单位联考招聘考试历年真题完美版.docx
- 2025年正安县事业单位联考招聘考试历年真题完美版.docx
- 2025年金沙县事业单位联考招聘考试真题汇编新版.docx
- 2025年乐业县辅警招聘考试真题汇编及答案1套.docx
- 2025年新龙县事业单位联考招聘考试历年真题附答案.docx
- 2025年淮阳县事业单位联考招聘考试历年真题含答案.docx
- 2025年紫金县事业单位联考招聘考试真题汇编含答案.docx
- 2025年永福县事业单位联考招聘考试历年真题推荐.docx
- 2025年睢县事业单位联考招聘考试历年真题含答案.docx
原创力文档


文档评论(0)