《数据结构(c语言版)》知识点概括

合集下载

数据结构c语言版知识点总结

数据结构c语言版知识点总结

数据结构c语言版知识点总结数据结构C语言版知识点总结数据结构是计算机科学中的一个重要分支,它研究的是数据的组织、存储和管理方式。

C语言是一种广泛使用的编程语言,也是数据结构中常用的编程语言之一。

本文将对数据结构C语言版的知识点进行总结,包括线性结构、树形结构、图形结构等。

一、线性结构线性结构是指数据元素之间存在一对一的线性关系,即每个数据元素只有一个直接前驱和一个直接后继。

常见的线性结构有数组、链表、栈和队列等。

1. 数组数组是一种线性结构,它由一组相同类型的数据元素组成,这些元素按照一定的顺序排列。

数组的特点是可以通过下标来访问元素,但是数组的长度是固定的,不能动态地增加或减少。

2. 链表链表是一种动态数据结构,它由一组节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。

链表的特点是可以动态地增加或删除节点,但是访问元素需要遍历整个链表。

3. 栈栈是一种后进先出(LIFO)的线性结构,它只允许在栈顶进行插入和删除操作。

栈的应用非常广泛,例如表达式求值、函数调用等。

4. 队列队列是一种先进先出(FIFO)的线性结构,它只允许在队尾进行插入操作,在队头进行删除操作。

队列的应用也非常广泛,例如进程调度、消息传递等。

二、树形结构树形结构是一种非线性结构,它由一组节点组成,每个节点包含一个数据元素和若干个指向子节点的指针。

树形结构常用于表示层次关系,例如文件系统、组织结构等。

1. 二叉树二叉树是一种特殊的树形结构,它的每个节点最多有两个子节点,分别称为左子节点和右子节点。

二叉树的遍历方式有前序遍历、中序遍历和后序遍历。

2. 平衡树平衡树是一种特殊的二叉树,它的左右子树的高度差不超过1。

常见的平衡树有AVL树、红黑树等,它们可以保证树的高度不超过logN,从而提高了树的查找效率。

3. 堆堆是一种特殊的树形结构,它满足堆序性质,即每个节点的值都大于等于(或小于等于)其子节点的值。

堆常用于实现优先队列等数据结构。

c语言数据结构基础知识

c语言数据结构基础知识

c语言数据结构基础知识C语言中的数据结构基础知识主要包括以下内容:1. 数组(Array):是一种线性数据结构,用于存储相同类型的数据元素。

数组的元素通过索引访问,索引从0开始。

2. 链表(LinkedList):是一种动态数据结构,由节点组成,每个节点存储数据和指向下一个节点的指针。

链表可以分为单向链表、双向链表和循环链表等。

3. 栈(Stack):是一种后进先出(LIFO)的数据结构,只允许在表的一端进行插入和删除操作,该端称为栈顶。

栈可以用数组或链表实现。

4. 队列(Queue):是一种先进先出(FIFO)的数据结构,只允许在一端插入元素,在另一端删除元素。

队列可以用数组或链表实现。

5. 树(Tree):是一种非线性数据结构,由节点和边组成,每个节点可以有多个子节点。

常见的树结构包括二叉树、平衡二叉树、二叉搜索树等。

6. 图(Graph):是一种非线性数据结构,由顶点和边组成,可以表示各种关系。

图可以分为有向图和无向图,常见的图算法包括深度优先搜索和广度优先搜索。

7. 哈希表(HashTable):是一种根据关键字直接访问内存位置的数据结构,通过散列函数将关键字转化为索引,可以实现快速的查找、插入和删除操作。

8. 集合(Set):是一种用于存储不重复元素的数据结构,可以实现集合的并、交、差等操作。

9. 堆(Heap):是一种完全二叉树的数据结构,每个节点的值都大于等于(或小于等于)其子节点的值。

堆常用于实现优先队列和排序算法。

10. 图表(Table):是一种二维数据结构,由行和列组成,常用于存储和处理大量的数据。

以上是C语言中常见的数据结构基础知识,掌握这些知识可以帮助我们更好地理解和应用C语言中的数据结构。

数据结构(c语言版)复习知识点

数据结构(c语言版)复习知识点

第一章绪论1.1数据、数据元素、数据项、数据结构等基本概念1.数据(data):客观事物的符号表示,在计算机科学中指所有能输入计算机中并被计算机处理的符号总称。

整数、浮点数、字符串、声音、图像。

2.数据元素(dataelement):数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

3.一个数据元素可能由若干个数据项(dataitem)组成。

数据元素是一个数据整体中相对独立的单位。

但它还可以分割成若干个具有不同属性的项(字段)。

故不是组成数据的最小单位。

数据项是构成数据的最小单位。

4.数据对象(dataobject):性质相同的数据元素的集合,是数据的一个子集。

5.数据结构(datastructure):数据元素以及数据元素之间存在的关系。

6.数据结构主要描述:数据元素之间的逻辑关系、数据在计算机系统中的存储方式和数据的运算,即数据的逻辑结构、存储结构和数据的操作集合1.2数据结构的逻辑结构、存储结构的含义及其相互关系1.数据的逻辑结构:用形式化方式描述数据元素间的关系。

数据的逻辑结构独立于计算机,是数据本身所固有的。

用于算法的设计。

两大类逻辑结构:线性结构(线性表、栈、队列、数组和串),非线性结构(树和图)。

2.数据的物理结构(也称存储结构):数据在计算机中的具体表示。

包括数据元素的表示和关系的表示。

存储结构是逻辑结构在计算机存贮器中的映像,必须依赖于计算机。

用于算法的实现。

数据的存储方式可分为如下两类:顺序存储、链接存储。

1.3算法1.算法的定义:算法是对特定问题求解步骤的一种描述,是指令的有限序列。

2.算法的特性:有穷性——算法必须在执行有穷步之后结束,而且每一步都可在有穷时间内完成确定性——每条指令无二义性。

并且,相同的输入只能得到相同的输出;可行性——算法中描述的每一操作,都可以通过已实现的基本运算来实现。

输入——算法有零至多个输入。

输出——算法有一个至多个输出3.算法效率的度量:时间复杂度和空间复杂度及计算。

数据结构(C语言)分享笔记:数据结构的逻辑层次、存储层次

数据结构(C语言)分享笔记:数据结构的逻辑层次、存储层次

数据结构(C语⾔)分享笔记:数据结构的逻辑层次、存储层次 数据结构,⼀个简单的定义:相互之间存在⼀种或多种特定关系的数据元素的集合。

即:数据结构 = 元素集合 + 元素间关系的集合。

在讨论数据结构时,可以基于两个不同的层次:1.逻辑层次 2.存储层次 ( 很多专业书中也写为:逻辑结构、存储结构。

但为了避免概念间的混淆,我认为 “层次” 这⼀表述⽅式更贴切 ) 。

逻辑层次,是指对描述对象的单纯的数学抽象。

例如:⼀个科研⼩组由1名导师、2名研究⽣和6名本科⽣构成,导师指导2名研究⽣,每个研究⽣分别指导3名本科⽣。

将这个⼩组视为⼀个数据结构,则从逻辑层次来看,这个数据结构是⼀个简单的树形结构。

存储层次,是指数据结构在计算机存储器中的映射,即通过特定的存储⽅法来反映数据结构中的逻辑关系。

[2] “程序员更常⽤到的” 数据结构的概念 我们在实际情况中很少能直接涉及到数据结构的存储层次:数据结构在存储器中的物理位置——这种很底层的技术。

我们更多地是基于⾼级语⾔来讨论数据结构的,如C语⾔。

⽐如:我们⽤C语⾔中的⼀维数组来描述存储层次中的顺序存储结构,⽤C语⾔中的指针来描述存储层次中的链式存储结构。

在这种情况下,我们可以把C语⾔抽象地看作⼀个执⾏C指令和C数据类型的虚拟处理器,则我们讨论的存储层次实际上是基于虚拟处理器的层次。

⽽这个层次才是和我们接触最多的。

[3] 学习数据结构时的注意点 “数据结构” 这门课程虽然常与计算机,程序设计等联系在⼀起,但其实它是⼀门独⽴的课程,是⼀门理论性很强的课程。

在学习的时候,经常要⽤到逻辑的、抽象的思维⽅式。

同时也要多通过写程序来练习,这样才能避免纸上谈兵,提⾼⾃⼰的编程⽔平。

数据结构c语言版 总结

数据结构c语言版 总结
数据结构主要内容
退出
第一章 绪论
1.基本概念和术语 2.算法分析
第二章 线性表
1.顺序表特性
2.链式表特性 3.广义表
第三章 栈和队列
1. 堆栈和队列的存储Байду номын сангаас性 2. 堆栈的应用(中缀—后缀转换) 3. 循环队列的定义
第四章 串和数组
1. 一、二维数组之间的关系 2. 一、二维数组之间的转换(行、列) 3. 特殊矩阵的压缩存储
第五章
树与二叉树
1. 树的定义及术语 2. 二叉树的遍历 3. 二叉排序树 4. 哈夫曼树及哈夫曼编码 5. 线索二叉树 6. 一般树转二叉树
第 六 章
1.图的定义及术语 2.握手定理 3.图的遍历 4.最小生成树 5.最短路径 6.拓扑序列

第七章
排序
1.各种排序方法的思想及特点 2.堆的定义
第八章
查找
1.静态查找表及查找算法:顺序查 找、折半查找 2.动态查找表及查找算法:二叉排 序树、B_树 3.哈希表及查找算法

严蔚敏数据结构(C语言版)知识点总结笔记课后答案

严蔚敏数据结构(C语言版)知识点总结笔记课后答案

第1章绪论1.1复习笔记一、数据结构的定义数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。

二、基本概念和术语数据数据(data)是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称,它是计算机程序加工的“原料”。

2.数据元素数据元素(data element)是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

3.数据对象数据对象(data object)是性质相同的数据元素的集合,是数据的一个子集。

4.数据结构数据结构(data structure)是相互之间存在一种或多种特定关系的数据元素的集合。

(1)数据结构的基本结构根据数据元素之间关系的不同特性,通常有下列四类基本结构:① 集合。

数据元素之间除了“同属于一个集合”的关系外,别无其它关系。

② 线性结构。

数据元素之间存在一个对一个的关系。

③ 树形结构。

数据元素之间存在一个对多个的关系。

④ 图状结构或网状结构。

数据元素之间存在多个对多个的关系。

如图1-1所示为上述四类基本结构的关系图。

图1-1 四类基本结构的关系图(2)数据结构的形式定义数据结构的形式定义为:数据结构是一个二元组Data_Structure==(D,S)其中:D表示数据元素的有限集,S表示D上关系的有限集。

(3)数据结构在计算机中的表示数据结构在计算机中的表示(又称映象)称为数据的物理结构,又称存储结构。

它包括数据元素的表示和关系的表示。

① 元素的表示。

计算机数据元素用一个由若干位组合起来形成的一个位串表示。

② 关系的表示。

计算机中数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象。

并由这两种不同的表示方法得到两种不同的存储结构:顺序存储结构和链式存储结构。

a.顺序映象的特点是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。

b.非顺序映象的特点是借助指示元素存储地址的指针(pointer)表示数据元素之间的逻辑关系。

数据结构(C语言版)期末复习汇总

数据结构(C语言版)期末复习汇总

数据结构(C语言版)期末复习汇总第一章绪论数据结构:是一门研究非数值计算程序设计中的操作对象,以及这些对象之间的关系和操作的学科。

数据结构是一门综合性的专业课程,是一门介于数学、计算机硬件、计算机软件之间的一门核心课程。

是设计和实现编译系统、操作系统、数据库系统及其他系统程序和大型应用程序的基础。

数据:是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。

如数学计算中用到的整数和实数,文本编辑中用到的字符串,多媒体程序处理的图形、图像、声音及动画等通过特殊编码定义后的数据。

数据的逻辑结构划分:线、树、图算法的定义及特性算法:是为了解决某类问题而规定的一个有限长的操作序列。

五个特性:有穷性、确定性、可行性、输入、输出评价算法优劣的基本标准(4个):正确性、可读性、健壮性、高效性及低存储量第二章线性表线性表的定义和特点:线性表:由n(n≥0)个数据特性相同的元素构成的有限序列。

线性表中元素个数n(n≥0)定义为线性表的长度,n=0时称为空表。

非空线性表或线性结构,其特点:(1)存在唯一的一个被称作“第一个”的数据元素;(2)存在唯一的一个被称作“最有一个”的数据元素;(3)除第一个之外,结构中的每个数据元素均只有一个前驱;(4)除最后一个之外,结构中的每个数据元素均只有一个后继。

顺序表的插入:n个元素在i位插入,应移动(n-i+1)位元素。

顺序表存储结构的优缺点:优点:逻辑相邻,物理相邻;可随机存取任一元素;存储空间使用紧凑;缺点:插入、删除操作需要移动大量的元素;预先分配空间需按最大空间分配,利用不充分;表容量难以扩充;线性表的应用:一般线性表的合并:★★★算法2.1:LA=(7,5,3,11) LB=(2,6,3)合并后LA=(7,5,3,11,2,6)算法思想:扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去。

只要从线性表LB中依次取得每个数据元素,并依值在线性表LA中进行查访,若不存在,则插入之。

《数据结构(C语言版)》复习重点要点

《数据结构(C语言版)》复习重点要点

《数据结构(C语言版)》复习重点重点在二、三、六、七、九、十章,考试内容两大类:概念,算法第1章、绪论1。

数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称.2. 数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

3。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合.其4类基本结构:集合、线性结构、树形结构、图状结构或网状结构4. 逻辑结构:是数据元素之间的逻辑关系的描述。

5. 物理结构(存储结构):是数据结构在计算机中的表示(又称映像).其4种存储结构:顺序存数结构、链式存数结构、索引存数结构、散列存数结构6. 算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。

其5个重要特性:有穷性、确定性、可行性、输入、输出7。

时间复杂度:算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记作,T(n)=O(f(n)) ;他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称做算法的渐进时间复杂度,简称时间复杂度。

例如: (a){++x;s=0;}(b) for(i=1;i〈=n;++i){++x;s += x;}(c) for(j=1;j<=n;++j)for(k=1;k〈=n;++k){++x;s += x;}含基本操作“x增1"的语句的频度分别为1、n和n²,则这3个程序段的时间复杂度分别为O(1)、O(n)和O(n²),分别称为常量阶、线性阶和平方阶。

还可呈现对数阶O(log n)、指数阶O(2的n次方)等。

8. 空间复杂度:算法所需存储空间的度量记作,S(n)=O(f(n))。

第2章、线性表1。

线性表:是最常用最简单的一种数据结构,一个线性表是n个数据元素的有限序列。

2。

线性表的顺序存储结构:是用一组地址连续的存储单元依次存储线性表的数据元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构知识点概括第一章概论数据就就是指能够被计算机识别、存储与加工处理得信息得载体。

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

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

数据结构得定义:·逻辑结构:从逻辑结构上描述数据,独立于计算机.·线性结构:一对一关系。

·线性结构:多对多关系。

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

·顺序存储结构:如数组。

·链式存储结构:如链表。

·索引存储结构:·稠密索引:每个结点都有索引项。

·稀疏索引:每组结点都有索引项.·散列存储结构:如散列表。

·数据运算。

·对数据得操作。

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

·常用得有:检索、插入、删除、更新、排序。

数据类型:就是一个值得集合以及在这些值上定义得一组操作得总称.·结构类型:由用户借助于描述机制定义,就是导出类型。

抽象数据类型ADT:·就是抽象数据得组织与与之得操作。

相当于在概念层上描述问题.·优点就是将数据与操作封装在一起实现了信息隐藏.程序设计得实质就是对实际问题选择一种好得数据结构,设计一个好得算法.算法取决于数据结构。

算法就是一个良定义得计算过程,以一个或多个值输入,并以一个或多个值输出.评价算法得好坏得因素:·算法就是正确得;·执行算法得时间;·执行算法得存储空间(主要就是辅助存储空间);·算法易于理解、编码、调试。

时间复杂度:就是某个算法得时间耗费,它就是该算法所求解问题规模n得函数. 渐近时间复杂度:就是指当问题规模趋向无穷大时,该算法时间复杂度得数量级。

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

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

时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。

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

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

第二章线性表线性表就是由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)在顺序表中实现得基本运算:·插入:平均移动结点次数为n/2;平均时间复杂度均为O(n)。

·删除:平均移动结点次数为(n-1)/2;平均时间复杂度均为O(n)。

线性表得链式存储结构中结点得逻辑次序与物理次序不一定相同,为了能正确表示结点间得逻辑关系,在存储每个结点值得同时,还存储了其后继结点得地址信息(即指针或链)。

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

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

单链表运算:·建立单链表·头插法:s—〉next=head;head=s;生成得顺序与输入顺序相反。

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

·尾插法:head=rear=null;if(head=null)head=s;else r—>next=s;r=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)单循环链表就是一种首尾相接得单链表,终端结点得指针域指向开始结点或头结点。

链表终止条件就是以指针等于头指针或尾指针.采用单循环链表在实用中多采用尾指针表示单循环链表.优点就是查找头指针与尾指针得时间都就是O(1),不用遍历整个链表.双链表就就是双向链表,就就是在单链表得每个结点里再增加一个指向其直接前趋得指针域prior,形成两条不同方向得链。

由头指针head惟一确定。

双链表也可以头尾相链接构成双(向)循环链表.双链表上得插入与删除时间复杂度均为O(1)。

顺序表与链表得比较:·基于空间:·顺序表得存储空间就是静态分配,存储密度为1;适于线性表事先确定其大小时采用.·链表得存储空间就是动态分配,存储密度<1;适于线性表长度变化大时采用。

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

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

·若插入与删除主要发生在表得首尾两端,则宜采用尾指针表示得单循环链表.第三章栈与队列栈(Stack)就是仅限制在表得一端进行插入与删除运算得线性表,称插入、删除这一端为栈顶,另一端称为栈底。

表中无元素时为空栈。

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

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

栈得基本运算有六种: ·构造空栈:InitStack(S)·判栈空:StackEmpty(S)·判栈满: StackFull(S)·进栈: Push(S,x)·退栈: Pop(S)·取栈顶元素:StackTop(S)在顺序栈中有“上溢”与“下溢"得现象。

·“上溢”就是栈顶指针指出栈得外面就是出错状态.·“下溢”可以表示栈为空栈,因此用来作为控制转移得条件.顺序栈中得基本操作有六种:·构造空栈·判栈空·判栈满·进栈·退栈·取栈顶元素链栈则没有上溢得限制,因此进栈不要判栈满.链栈不需要在头部附加头结点,只要有链表得头指针就可以了。

链栈中得基本操作有五种:·构造空栈·判栈空·进栈·退栈·取栈顶元素队列(Queue)就是一种运算受限得线性表,插入在表得一端进行,而删除在表得另一端进行,允许删除得一端称为队头(front),允许插入得一端称为队尾(rear) ,队列得操作原则就是先进先出得,又称作FIFO表(First InFirst Out)、队列也有顺序存储与链式存储两种存储结构。

队列得基本运算有六种:·置空队:InitQueue(Q)·判队空:QueueEmpty(Q)·判队满:QueueFull(Q)·入队:EnQueue(Q,x)·出队:DeQueue(Q)·取队头元素:QueueFront(Q)顺序队列得“假上溢”现象:由于头尾指针不断前移,超出向量空间.这时整个向量空间及队列就是空得却产生了“上溢"现象。

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

判定循环队列就是空还就是满,方法有三种:·一种就是另设一个布尔变量来判断;·第二种就是少用一个元素空间,入队时先测试((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)。

相关文档
最新文档