《数据结构》知识点总结.docx

上传人:b****1 文档编号:2060899 上传时间:2022-10-26 格式:DOCX 页数:25 大小:35.96KB
下载 相关 举报
《数据结构》知识点总结.docx_第1页
第1页 / 共25页
《数据结构》知识点总结.docx_第2页
第2页 / 共25页
《数据结构》知识点总结.docx_第3页
第3页 / 共25页
《数据结构》知识点总结.docx_第4页
第4页 / 共25页
《数据结构》知识点总结.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

《数据结构》知识点总结.docx

《《数据结构》知识点总结.docx》由会员分享,可在线阅读,更多相关《《数据结构》知识点总结.docx(25页珍藏版)》请在冰豆网上搜索。

《数据结构》知识点总结.docx

《数据结构》知识点总结

第一章概论

数据就就是指能够被计算机识别、存储与加工处理得信息得载体。

数据元素就是数据得基本单位,可以由若干个数据项组成。

数据项就是具有独立含义得最小标识单位。

数据结构得定义:

逻辑结构:

从逻辑结构上描述数据,独立于计算机。

线性结构:

一对一关

系。

线性结构:

多对多关系。

存储结构:

就是逻辑结构用计算机语言得实现。

顺序存储结构:

如数组。

链式存储结构:

如链表。

索引存储结构:

稠密索引:

每个结点都有索引项。

稀疏XX:

每组结点都有XX项。

散列存储结构:

如散列表。

数据运算。

对数据得操作。

定义在逻辑结构上,每种逻辑结构都有一个运算集合。

常用得有:

检索、插入、删除、更新、排序。

数据类型:

就是一个值得集合以及在这些值上定义得一组操作得总称。

结构类型:

由用户借助于描述机制定义,就是导出类型。

抽象数据类型ADT:

就是抽象数据得组织与与之得操作。

相当于在概念层

上描述问题。

优点就是将数据与操作封装在一起实现了信息隐藏。

程序设计得实质就是对实际问题选择一种好得数据结构,设计一个好得算法。

算法取决于数据结构。

算法就是一个良定义得计算过程,以一个或多个值输入,并以一个或多个值输出。

评价算法得好坏得因素:

算法就是正确得;

执行算法得时间;

执行算法得存储空间(主要就是辅助存储空间);

算法易于理解、编码、调试。

时间复杂度:

就是某个算法得时间耗费,它就是该算法所求解问题规模得函数。

渐近时间复杂度:

就是指当问题规模趋向无穷大时,该算法时间复杂度得数量级。

评价一个算法得时间性能时,主要标准就就是算法得渐近时间复杂度。

算法中语句得频度不仅与问题规模有关,还与输入实例中各元素得取值相关。

时间复杂度按数量级递增排列依次为:

常数阶O

(1)、对数阶O(Iog2n)、线性阶O(n)、线性对数阶0(nIog2n)、平方阶0(n八2)、方阶0(nA3)、……次方阶05你)、指数阶0(2An)。

空间复杂度:

就是某个算法得空间耗费,它就是该算法所求解问题规模得函数。

算法得时间复杂度与空间复杂度合称算法复杂度。

第二章线性表

线性表就是由n》0个数据元素组成得有限序列。

n=0就是空表;非空表,只能有一个开始结点,有且只能有一个终端结点。

线性表上定义得基本运算:

构造空表:

Initlist(L)

求表长:

Listlength(L)

取结点:

GetNode(L,i)

查找:

LocateNode(L,x)

插入:

InsertList(L,x,i)

删除:

Delete(L,i)

顺序表就是按线性表得逻辑结构次序依次存放在一组地址连续得存储单元中。

在存储单元中得各元素得物理位置与

逻辑结构中各结点相邻关系就是一致得。

地址计算:

LOCa(i)=LOCa

(1)+(i-1)*d;(首地址为1)在顺序表中实现得基本运算:

每个结点值得同时,还存储了其后继结点得地址信息(即指针或链)。

这两部分信息组成链表中得结点结构。

一个单链表由头指针得名字来命名。

单链表运算:

建立单链表头插法:

s->next二head;head二s;生成得顺序与输入顺序相反。

平均时间复杂度均为O(n)。

尾插法:

head二rear二null;if(head二null)head二s;elser->next二sr=s;平均时间复杂度均为O(n)加头结点得算法:

对开始结点得操作无需特殊处理,统一了空表与非空表。

查找按序号:

与查找位置有关,平均时间复杂度均为O(n)。

按值:

与输入实例有关,平均时间复杂度均为O(n)。

插入运算:

p=GetNode(L,i-1);s->next二p->next;p->next二s;平均时间复杂度均为O(n)删除运算:

p=GetNode(L,i-1);r=p->next;

p->next=r->next;free(r);平均时间复杂度均为O(n)单循环链表就是一种首尾相接得单链表,终端结点得指针域指向开始结点或头结点。

链表终止条件就是以指针等于头指针或尾指针。

采用单循环链表在实用中多采用尾指针表示单循环链表。

优点就是查找头指针与尾指针得时间都就是0

(1),不用

遍历整个链表。

双链表就就是双向链表,就就是在单链表得每个结点里再增加一个指向其直接前趋得指针域prior,形成两条不同方

向得链。

由头指针head惟一确定。

双链表也可以头尾相链接构成双(向)循环链表。

双链表上得插入与删除时间复杂度均为O

(1)。

顺序表与链表得比较:

基于空间:

顺序表得存储空间就是静态分配,存储密度为1;适于线性表事先确定其大小时采用。

链表得存储空间就是动态分配,存储密度v1;适于线性表长度变化大时采用。

基于时间:

顺序表就是随机存储结构,当线性表得操作主要就是查找时,宜采用。

以插入与删除操作为主得线性表宜采用链表做存储结构。

若插入与删除主要发生在表得首尾两端,则宜采用尾指针表示得单循环链

第三章栈与队列

栈(Stack)就是仅限制在表得一端进行插入与删除运算得线性表,称插入、删除这一端为栈顶,另一端称为栈底。

表中无元素时为空栈。

栈得修改就是按后进先出得原则进行得,我们又称栈为LIFO表(LastInFirstOu)。

通常栈

顺序栈与链栈两种存储结构。

栈得基本运算有六种:

构造空栈:

InitStack(S)

判栈空:

StackEmpty(S)

判栈满:

StackFull(S)

进栈:

Push(S,x)

退栈:

Pop(S)

取栈顶元素:

StackTop(S)

在顺序栈中有“上溢”与“下溢”得现象。

上“溢”就是栈顶指针指出栈得外面就是出错状态。

下“溢”可以表示栈为空栈,因此用来作为控制转移得条件。

顺序栈中得基本操作有六种:

构造空栈判栈空判栈满进栈退栈取栈顶元素链栈则没有上溢得限制,因此进栈不要判栈满。

链栈不需要在头部附加头结点,只要有链表得头指针就可以了。

链栈中得基本操作有五种:

构造空栈判栈空进栈退栈取栈顶元素

队列(Queue)就是一种运算受限得线性表,插入在表得一端进行,而删除在表得另一端进行,允许删除得一端称为队头(front),允许插入得一端称为队尾(rear),队列得操作原则就是先进先出得,又称作FIF0表(FirstInFirst

Out)、队列也有顺序存储与链式存储两种存储结构。

入队:

EnQueue(Q,x)

出队:

DeQueue(Q)

取队头元素:

QueueFront(Q)

顺序队列得“假上溢”现象:

由于头尾指针不断前移,超出向量空间。

这时整个向量空间及队列就是空得却产生了“上

溢”现象。

为了克服“假上溢”现象引入循环向量得概念,就是把向量空间形成一个头尾相接得环形,这时队列称循环队列。

判定循环队列就是空还就是满,方法有三种:

一种就是另设一个XX变量来判断;

第二种就是少用一个元素空间,入队时先测试((rear+1)%m=front)?

满:

空;

第三种就就是用一个计数器记录队列中得元素得总数。

队列得链式存储结构称为链队列,一个链队列就就是一个操作受限得单链表。

为了便于在表尾进行插入(入队)得操作,在表尾增加一个尾指针,一个链队列就由一个头指针与一个尾指针唯一地确定。

链队列不存在队满与上溢得问题。

在链队列得出队算法中,要注意当原队中只有一个结点时,出队后要同进修改头尾指针并使队列变空。

第四章串

串就是零个或多个字符组成得有限序列。

空串:

就是指长度为零得串,也就就是串中不包含任何字符(结点)。

空白串:

指串中包含一个或多个空格字符得串。

在一个串中任意个连续字符组成得子序列称为该串得子串,包含子串得串就称为主串。

子串在主串中得序号就就是指子串在主串中首次出现得位置。

空串就是任意串得子串,任意串就是自身得子串。

串分为两种:

串常量在程序中只能引用不能改变;

串变量得值可以改变。

串得基本运算有:

求串长strlen(char*s)

串复制strcpy(char*to,char*from)

串联接strcat(char*to,char*from)

串比较charcmp(char*s1,char*s2)

字符定位strchr(char*s,charc)

串就是特殊得线性表(结点就是字符),所以串得存储结构与线性表得存储结构类似。

串得顺序存储结构简称为顺序串。

顺序串又可按存储分配得不同分为:

静态存储分配:

直接用定长得字符数组来定义。

优点就是涉及串长得操作速度快,但不适合插入、链接操作。

动态存储分配:

就是在定义串时不分配存储空间,需要使用时按所需串得长度分配存储单元。

串得链式存储就就是用单链表得方式存储串值,串得这种链式存储结构简称为链串。

链串与单链表得差异只就是它得结

点数据域为单个字符。

为了解决“存储密度”低得状况,可以让一个结点存储多个字符,即结点得大小。

顺序串上子串定位得运算:

又称串得“模式匹配”或“串匹配”,就是在主串中查找出子串出现得位置。

在串匹配中,将主串称为目标(串),子串称为模式

(串)。

这就是比较容易理解得,串匹配问题就就是找出给定模式串P在给定

目标串T中首次出现得有效位移或者就是全部有效位移。

最坏得情况下时间复杂度就是O((n-m+1)m),假如m与n同阶

得话则它就是O(n八2)。

链串上得子串定位运算位移就是结点地址而不就是整数

第五章多维数组

数组一般用顺序存储得方式表示。

存储得方式有:

行优先顺序,也就就是把数组逐行依次排列。

PASCALC

列优先顺序,就就是把数组逐列依次排列。

FORTRAN特殊矩阵得概念:

谓特殊矩阵就是指非零元素或零元素分布有一定规律得矩阵。

稀疏矩阵得概念:

一个矩阵中若其非零元素得个数远远小于零元素得个数,则该矩阵称为稀疏矩阵。

特殊矩阵得类型:

对称矩阵:

满足a(ij)=a(ji)。

元素总数n(n+1)/2、I=max(i,j),J=min(i,j),LOCa(ij)=LOC(sa[0])+(I*(I+1)/2+J)*d、

三角矩阵:

上三角阵:

k=i*(2n-i+1)/2+j-i,LOCa(ij)二LOC(sa[0])+k*d、

下三角阵:

k=i*(i+1)/2+j,LOCa(ij)二LOC(sa[0])+k*d、

对角矩阵:

k=2i+j,LOCa(ij)二LOC(sa[0])+k*d、

稀疏矩阵得压缩存储方式用三元组表把非零元素得值与它所在得行号列号做为一个结点存放在一起,用这些结点组成得一个线性表来表示。

但这种压缩存储方式将失去随机存储功能。

加入行表记录每行得非零元素在三元组表中得

起始位置,即带行表得三元组表。

第六章树

树就是n个结点得有限集合,非空时必须满足:

只有一个称为根得结点;其余结点形成m个不相交得子集,并称

根得子树。

根就是开始结点;结点得子树数称度;度为0得结点称叶子(终端结点);度不为0得结点称分支结点(非终端结

点);除根外得分支结点称内部结点;有序树就是子树有左,右之分得树;无序树就是子树没有左,右之分得树;森林就是m个互不相交得树得集合;树得四种不同表示方法:

树形表示

法;嵌套集合表示法;凹入表示法广义表表示法。

二叉树得定义:

就是n》0个结点得有限集,它就是空集(n=0)或由一个根结点及两棵互不相交得分别称作这个根得

xx与右子树得二叉树组成。

二叉树不就是

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1