[数据结构]简单数据结构总结及链接{栈|队列|树|链表} 原创

A.编写部分

参考教材 蔚严敏《数据结构》

*写完了 栈 链 队 二叉树 标记为重点的部分
12.1
顺序表
单链表
双向链表

12.3
循环链表
双向循环链表
一元多项式表示与相加
有序表的合并O

12.4
Queue
Stack

12.5
Tree
Stack
有序表的合并*

B.相关链接

注:均经过gcc编译。

进制转换括号匹配
数组模拟栈及其基本操作链表模拟栈及其基本操作
N表达式求值
队列
链表模拟队列相关操作数组模拟链表相关操作
链表
有序表的合并一元多项式的表示与相加
循环链表及其基本操作循环表及其基本操作
双向链表及其基本操作双向链表及其基本操作
单链表及其基本操作
链表模拟二叉树及其基本操作

C.数据结构简单知识点注释

1. 理解数据结构的基本概念(数据、数据元素、数据项、数据对象、数据结构等)。

name
EngName
how
exp
数据
data

客观事物的符号表示

整数 字符串 图形、图像、特殊编码之后的数据

数据元素

Element

数据的基本单位

比如棋盘的一个格局 图中的一个顶点

数据项

Item
组成数据元素的 不可分割的 独立含义的 最小单位

姓名

数据对象

Object
性质相同的数据元素的集合 是数据的一个子集
学生基本信息表

2.掌握数据结构所含两个层次(逻辑结构和存储结构)的具体含义及其相互关系,逻辑结构:集合结构、线性结构、树结构、图结构或是网结构;存储结构:顺序存储结构、链式存储结构。

2.1数据结构

Structure
是相互之间存在一种或多种关系的数据元素的集合 带 结构 的数据元素的集合
分为 逻辑结构 存储结构

2.1.1逻辑结构
集合 线性 树 图
同集合 一对一 一对多 多对多

从逻辑关系上 描述 数据, 于数据的存储无关 独立于计算机, (! 可以看作是从具体问题中抽象出来的数学模型)
非线性结构 (集合结构 树 图)
线性结构 (线性表 栈 队列 字符串 数组)

2.1.2数据结构
顺序存储结构

借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系
通常借助 数组类型 来描述

链式存储结构

不需要一片连续的存储空间
通常借助 指针类型 来描述
结点 占用两个连续的存储单元 一个存放节点的信息 一个存放后继节点的首地址

3 了解抽象数据类型的定义

抽象数据类型

Abstract Data Type (ADT)
一般指 由 用户定义的 表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,

具体包括三部分: 数据对象 数据对象上关系的集合 以及数据对象基本操作的集合

定义格式 如下

ADT 抽象数据类型名:
数据对象:(定义)
数据关系:(定义)
基本操作:(定义)
}ADT 抽象数据类型名

基本操作的两种参数 1. 引用参数 & 返回变化 2.操作 提供输入值

4 掌握时间复杂度的概念及其确定的一般方法

基本概念

TimeComplexity
算法中 基本语句 的重复执行次数的 复杂程度
基本语句 -> 算法中重复执行次数于算法执行时间成正比的语句 它对算法运行时间的贡献最大!
简单理解为 算法中 频次最高的 执行次数

确定的一般方法

常量阶 线行阶 平方阶 立方阶 对数阶 指数阶 线行对数阶 K次方阶
老实讲 似乎就是靠带入
O(2^n) 指数阶 的算法效率极低 n稍大就无法使用
尽可能选择使用多项式 O(n^k) 的算法 而避免使用 指数阶

最好 最坏 平均 时间复杂度

依据算法本身的条件 得到
exp for(int i=0;i<n;i++) if (a[i]==e) return i+1;
一般而言 时间复杂度 指 最坏情况下的时间复杂度

5 了解空间复杂度的概念及其与时间复杂度的关系

基本概念

SpaceComplexity
算法所需存储空间的量度 ->空间复杂度 -> 问题规模n的函数->S(n) = O(f(n))
只需要分析 算法在实现时需要的辅助空间
exp for(int i=0;i<n;i++) b[i] = a[n-i-1]; for(int i =0;i<n;i++) a[i] = b[i];
辅助空间b S(n) = O(n)

通常情况下,由于运算空间较为充足,人们都以 时间复杂度 作为算法优劣的指标

posted @ 2022-10-04 20:05  俺叫西西弗斯  阅读(0)  评论(0)    收藏  举报  来源