1.第四章学习的内容是串,数组和广义表 串的模式匹配有两种算法,一种是BF算法,也是最传统的算法,耗时久,时间复杂度是O(m*n),另一种就是KMP算法,时间复杂度是O(m+n) 跟之前的数组比起来,这章学习的数组还可以用链式结构,根据用户自行选择,还学了特殊矩阵的压缩存储 广义表则是一种递归的线性 ...
分类:
其他好文 时间:
2020-05-05 23:17:12
阅读次数:
52
一、已知线性表中元素以值递增有序排列,并以单链表作存储结构。试写一高效的算法,删除表中所有值大于mink且小于maxk的元素(若表中存在这样的元素)同时释放被删结点空间,并分析你的算法的时间复杂度(注意:mink和maxk是给定的两个参变量,它们的值可以和表中的元素相同,也可以不同)。 答: 本题对 ...
分类:
编程语言 时间:
2020-05-05 19:53:28
阅读次数:
178
一、本章内容小结 本章主要学习了串、数组和广义表。 1.串 定义: 串是内容受限的线性表,限定表中元素为字符。 串的两种存储结构: 顺序存储结构、链式存储结构。 串的模式匹配: 有两种常见算法: (1)BF算法,暴力依次比较法,时间复杂度为O(m*n)。 (2)KMP算法,找出当前匹配串中头尾最长的 ...
分类:
其他好文 时间:
2020-05-05 18:17:44
阅读次数:
73
你对本章内容的小结 1)三种数据结构:串,数组,广义表2)串是内容受限的线性表,它限定表中的元素为字符。串有两种基本存储结构:顺序存储和链式存储。串的常用算法是模式匹配算法;3)多维数组可以看成是线性表的推广,其特点是结构中的元素本身可以是具有某种结构的数据,但属于同一种数据类型。数组一般采用顺序存 ...
分类:
其他好文 时间:
2020-05-05 12:43:25
阅读次数:
56
顺序表是程序员在编程中会经常用到的数据结构,简单来说,顺表就是用数组来存储 数据和数据与数据之间的联系。 1 #pragma once 2 #include<stdio.h> 3 #include<malloc.h> 4 5 typedef int ElemType; //假定线性表的元素类型为整型 ...
分类:
编程语言 时间:
2020-05-05 10:53:02
阅读次数:
65
一.本章内容小结 本章我们学习了串,数组和广义表 首先,我们学习了串,线性表主要由顺序表示或链式表示。在实际应用中,常以栈,队列,字符串等特殊形式使用。线性表和串的操作基本类似,但串的操作针对串的整体,而线性表则针对单个元素。 概念的理解并不复杂,接下来是实现所用的算法 1.BF算法 BF算法即暴风 ...
分类:
其他好文 时间:
2020-05-04 21:34:50
阅读次数:
75
一、内容小结 数据结构第四章学习的是串,数组和广义表 串的定义其实在c++学习中就有所接触,串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束为字符集。在线性表的基本操作中,大多以“单个元素” 作为操作对象,在串的基本操作中,通常以“串的整体”作为操作对象, 重点说的是两个串模式匹配算法 1. ...
分类:
其他好文 时间:
2020-05-04 19:38:42
阅读次数:
89
参考: [1] uthash | 学步园 [2] 源码 [3] 官方文档 [4] [5] 一、哈希表的概念及作用 在一般的线性表或者树中,我们所储存的值写它的存储位置的关系是随机的。因此,在查找过程中,需要一系列的与关键字的比较。算法的时间复杂度与比较的次数有关。线性表查找的时间复杂度为O(n)而平 ...
分类:
其他好文 时间:
2020-05-04 19:25:52
阅读次数:
45
线性表 顺序表示 定义: 相关函数: C语言: malloc(m) 开辟 m 字节长度的地址空间,并返回这段空间的首地址。 sizeof(x) 计算变量 x 的长度。 free(p) 释放指针 p 所指变量的存储空间,即彻底删除一个变量。 C++:new 初始化线性表 参数用引用 参数用指针 销毁线 ...
分类:
编程语言 时间:
2020-05-04 17:31:31
阅读次数:
57
一、本章学习小结:第四章主要学习了串、数组和广义表,与以前学习的区别在于,本章将它们视为线性表。 1)串是内容受限的线性表,考虑到存储效率和算法方便性,一般采用顺序存储结构;考虑到串变量相差较大,可采用动态分配的方法;为了便于操作,可增设尾指针。 串的主要应用场景是模式匹配,其中有BF算法和KMP算 ...
分类:
其他好文 时间:
2020-05-04 12:59:26
阅读次数:
68