数据结构 ——c++实现(知识点集合)

本文是作者的数据结构复习笔记,涵盖了数据结构的基本概念、线性表、栈、队列、递归、串、数组、广义表、树与二叉树等内容。重点讲解了数据结构的逻辑与物理结构、算法复杂度、线性表的顺序与链式存储、栈和队列的操作、字符串的模式匹配算法(如KMP)以及二叉树的性质和遍历方法。文章适合数据结构初学者和复习者阅读。
摘要由CSDN通过智能技术生成

数据结构 ——c++实现(知识点集合)

某不知名学狗的复习记录,包含数据结构基本概念,线性表,栈、队列、递归,串、数组、广义表和树和森林内容整理。主要整理了知识点,代码较少。

第一章 绪论

1.1(算法+数据结构) = 程序

这个括号是体现面向对象的观点

1.2 数据结构的基本概念

数据结构的定义
数据,是信息的载体,是描述客观事物的数、字符、图形、图像、声音以及所有能输入计算机中并被计算机程序是别的和处理的符号的集合。

数据在特定的情况下可以是数字,或者是字符,数据对象就是数据的子集。例如一个特定的,解方程组的程序,它处理的是数据对象是整数和实数。无理数,复数也是数据对象,也就是数据的子集,但是在这个问题中,数据对象并不是他们。

数据的基本单位是数据元素,数据元素由若干数据项组成,数据项是最小单位。例如线性表由数组储存,每一个数组元素就可以称作一个数据元素。如果说我这个数组是int型,那么数据项就是一个integer。若是一个结构体数组,那么数据项就有多个。

数据结构不仅要描述数据,还要描述数据元素与数据元素之间的相互关系。 可分为2大类,也可分为4大类。
1. 线性结构,非线性结构
2. 集合,线性,树,图 数据逻辑结构指数据元素之间的逻辑关系。(以上所说的就是面向用户的逻辑结构) 数据结构(数据元素的表示和元素之间的关系)在计算机中的物理储存方式称为存储结构/物理结构。 算法设计基于逻辑结构,算法实现基于物理结构。
数据结构是数据元素的组织形式。

1.3算法性能与复杂度

1.3.1算法的定义 算法:一个用于实现某个特定任务的有穷指令集,这些指令规定里一个运算序列。具有以下特征
1. 输入性
2. 输出型
3. 确定性
4. 有穷性
5. 有效性

1.3.2 算法的性能标准

正确性
可用性
可读性
效率
健壮性

1.3.3算法复杂度

时间复杂度 循环嵌套 相乘 循环并列 相加
空间复杂度 空间复杂度,是算法所需的存储空间的量度。记作S(n) = O(f(n))。这里不是指程序本身所需要的存储空间,而是指解题过程中所需要的辅助空间。
算法效率的度量一般采用事前估计和后期测试两种方法。常采用事前估计。

第三章 线性表

顺序表 顺序表中任意两个逻辑相邻的数据元素在物理存储上也必然相邻。
顺序表的插入与删除的时间复杂度是On,删除也可以是O(1),就是把最后一个元素放到被删除的位置。
双向链表的删除就是把要删的节点的前驱节点的后指针指向要删的节点的后节点。 插入的时候,先把新节点挂上去,然后再进行前后处理。 静态链表
静态链表利用结构体数组作为链表的模拟,用下标作为指针。
head->next指向已经申请的空间头结点,avil指向第一个可利用的空间(没有存东西的节点)的指针。

第四章 栈、队列与递归

允许插入删除的地方叫栈顶,另外一端叫栈底。 top初值=-1。 注意pop和top函数的区别
一个是要pop要后退,一个是单单取元素。 入栈先++top,再

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
内含资源如下: 1.基本数据结构 1.1.Array ........... 动态数组 1.2.LinkedList ... 链表 1.3.BST .............. 二分搜索树 1.4.MapBST ..... 二分搜索树(用于实现映射) 1.5.AVLTree ...... AVL树 2.接口 2.1.Queue ........... 队列接口 2.2.Stack .............. 接口 2.3.Set .................. 集合接口 2.4.Map ............... 映射接口 2.5.Merger .......... 自定义函数接口 2.6.UnionFind ..... 并查集接口 3.高级数据结构 3.1.ArrayQueue .......................... 队列_基于动态数组实现 3.2.LinkedListQueue .................. 队列__基于链表实现 3.3.LoopQueue ........................... 循环队列_基于动态数组实现 3.4.PriorityQueue ....................... 优先队列_基于最大二叉堆实现 3.5.ArrayPriorityQueue ............. 优先队列_基于动态数组实现 3.6.LinkedListPriorityQueue ..... 优先队列_基于链表实现 3.7.ArrayStack ............................. _基于动态数组实现 3.8.LinkedListStack ..................... _基于链表实现 3.9.BSTSet ..................................... 集合_基于二分搜索树实现 3.10.LinkedListSet ....................... 集合_基于链表实现 3.11.BSTMap ................................ 映射_基于二分搜索树实现 3.12.AVLTreeMap ....................... 映射_ 基于AVL树实现 3.13.LinkedListMap .................... 映射_基于链表实现 3.14.MaxHeap ............................. 最大二叉堆 3.15.SegmentTree ...................... 线段树 3.16.Trie ......................................... 字典树 3.17.QuickFind ............................ 并查集_基于数组实现 3.18.QuickUnion ......................... 并查集_基于树思想实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ang_go

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值