18考研-数据结构复习笔记-线性表01
来源:互联网 发布:淘宝订单非支付宝交易 编辑:程序博客网 时间:2024/05/22 12:14
第二章线性表
考纲要求:
一、线性表的定义和基本操作
二、线性表的实现(自主命题中,大小题都有,可能会有2道以上算法设计题):
1.顺序存储
2.链式存储
3.线性表的应用
本章考点:
一、线性表的逻辑结构
二、顺序存储结构
三、链式存储结构
1.单链表
2.循环链表,双向链表
3.顺序表和链表的比较(具体问题时如何选择)
一、逻辑结构(题目涉及较少)
1.线性结构的基本特征:是一个数据元素的有序集(有次序)
1)存在唯一“第一元素”;2)存在唯一“最后元素”;3)除最后元素外均有“唯一后继”;4)除第一元素外均有“唯一前驱”;
2.抽象数据类型的线性表定义如下:
ADT list { 数据对象: D={Ai|} 数据关系: R1={Ai-1,Ai} {设线性表为(a1a2a3an称之为a在表中的位置)} 数据操作: 结构初始化操作/new 结构销毁操作/delete 引用型操作/use/ via address use 加工型操作/change data that was in i position}ADT list
3.具体操作
1)初始化操作
Initlist(&L) crate a null line list;
2)销毁操作
DestroyList(&L)
{ If (!null List) destroy list; }
3)引用操作
a.ListEmpty(L) have elements?
b.ListLength(L) how much elements?
c.PriorElem(L,cur_e,&pre_e) before element;
d.NextElem(L,cur_e,&next_e) next element;
e.GetElem(L,i,&e) get position i element;
f.LocateElem(L,e,compare()) current elements same with e;
g.ListTraverse(L,visit() ) visit every element of list L just once,
which with some stable rule;
4)加工操作
a.ClearList(&L) set list L with null;
b.PutList(&L,I,&e) put position i element;
c.listInsert(&L,I,e)insert element e to position i of list L;
d.Listdelete(&L,I,&e)delete element was in position i of list L;
4.可以利用上述基本操作的组合实现更复杂的操作。
For Instance 0:Assume that: there have two sets A and B,called LA and LB,and now we need a new set A = AUB.Transform :find different LA with LB elements and insert into LA;Analysis:visit LA,LB, compare LA with LB,and insert into LA;Operation:a.Visit LB; getElem(L,B,I)-e;b.Compare elements of LB with LA; locateElem(LA,e,compare());c. if same,skip,else insert; ListInsert(LA,n+1,e)For instance 1:归并两个“其数据元素按值非递减有序排列”的有序表LA和LB,求得有序表LC也具有相同的特征;Analysis: a.Init LC null; b.Get cur_e from LA and LB; c.If Ai <= Bj insert Ai into LC, else insert Bj; d.Until list over repeat step 23; e.Other elements via rule insert;Code :Void margeList(list La,list Lb,list &Lc){Initlist(Lc);I = j = 1; k=0;La_len = listlength(La);Lb_len = listlength(Lb);While(i <= La_len &&j<=Lb_len)While(j<=Lb_len){Getelem(La,i,ai);Getelem(Lb,j,bj);If (ai <= bj){Listinsert(Lc,++k,ai);++i;}Else{Listinsert(Lc,++k,bj);++j;}}while (i <= La_len){Getelem(La,i,ai);Listinsert(Lc,++k,ai);++i;}}While(j<=Lb_len){Getelem(Lb,j,bj);Listinsert(Lc,++k,bj);++j;}}//marge
- 18考研-数据结构复习笔记-线性表01
- 18考研-数据结构复习笔记-线性表02
- 18考研-数据结构复习笔记-线性表03
- 数据结构考研复习--线性表1
- 数据结构考研复习--线性表2
- 考研数据结构复习之线性表
- 《数据结构》复习笔记--线性表
- 数据结构考研复习--线性表3(约瑟夫环)
- 考研数据结构复习之线性表(二)
- 18考研-数据结构复习笔记-栈,队列,数组
- 复习 [数据结构] ---- 线性表
- 数据结构复习-线性表
- 【数据结构复习】线性表
- 考研复习(1)-线性表
- 数据结构复习篇:线性表
- 数据结构复习篇:线性表
- 数据结构复习之【线性表】
- 数据结构重新复习-线性表
- 正则表达式速查表
- MaxCompute SQL 概要
- 微信第三方平台开发经验总结(四):重定向到授权页
- Spring中线程池的应用
- python 3 module of the week
- 18考研-数据结构复习笔记-线性表01
- hdu6098--Inversion
- 调整SQLServer参数后实例停止且无法启动
- Oracle rownum介绍
- TCP粘包解决方案
- java异常
- 嵌入式软件工程师经典笔试题
- HTML标签大全
- ES6 扩展操作符的一个误区