数据结构相关

一、数据结构的分类

数据:更多的是非数值型的数据、视频、音频

结构:逻辑结构、存储结构

研究的是非数值型数据的逻辑结构、存储结构及其操作

1.逻辑结构(抽象的数据)

2.存储结构(数据在计算机中存储的方式)

顺序存储:数据在逻辑上相邻,在物理(指存储地址)上也相邻

链式存储:数据在逻辑上相邻,在物理上不相邻

索引存储:(相当于电话簿),就是有冲突的哈希存储

哈希存储:根据要查询的内容,直接定位到本人

3.相关操作

创、销、增、删、改、查、导入、导出

C语言:程序的基础

数据结构:高效的写程序

二、线性关系

1.顺序存储(顺序表)

特点:大小固定;表空不能取,表满不能存

定义:

1)顺序表的实现

(1)创建顺序表

(2)插入元素

(3)删除元素

按位删除

按值删除:(先查找该元素,找到后再删除)

        system();

(4)显示顺序表

(5)查询顺序表

基于显示做修改

(6)销毁顺序表

(7)修改顺序表内容

直接进行赋值

(8)导入和导出

同文件IO

(9)Makefile

2.链式存储

如何让不连续的空间连续起来:通过地址/指针来操作

1)链表的分类

是否有头结点:带头结点的链表、不带头结点的链表

是否循环:循环链表、不循环链表

按方向分类:单向链表、双向链表

(1)带头节点的不循环单链表

定义:

①单链表的创建:

②单链表的插入:
头插

中间插

尾插

③单链表的删除
头删、尾删

中间删

④单链表的销毁

⑤单链表的显示

⑥单链表的逆置

(2)带头结点的不循环双向链表
①双链表定义

②双链表的创建

③双链表的插入

④双链表的删除

⑤双链表的显示

⑥双链表的销毁

头删

3)静态链表

不用指针进行操作,改用二维数组的方式进行访问

3.受限的线性表

受限的地方:操作收到了限制

1)栈

特点:只能从栈顶进行操作,先进后出(FILO)

(1)顺序存储

例如:printf()的存储方式为栈,理解为右输入

(2)链式存储

限制了插入和删除的位置的单链表

栈的入栈头插、头删

2)队列

特点:只能从队尾插入,队头删除,先进后出(FIFO)

(1)顺序存储

本质还是顺序表,但是限制了插入和删除的位置:在队尾入,队头出

数组:用来保存数据

一个表示队尾,一个表示队头

队的定义

(2)链式存储

单链表的 尾插、头删  头插、尾删

三、树

1.定义(1对多)

树(Tree)是n(n≥0)个节点的有限集合T,它满足两个条件:

        有且仅有一个特定的称为根(Root)的节点

        其余节点可以分为m(m≥0)个互不相交的有限集合T1、T2、T3、......、Tm,其中每一个集合又称为一棵树,并称其根的子树

树叶:度数为零的节点称为树叶或者终端节点,度数不为零的节点称为分支节点

内部节点:除根节点外的分支节点称为内部节点

树根:根节点

树的度数:一个节点的子树的个数称为该节点的度数,一棵树的度数是指该树中节点的最大度数

层数:节点的层数等于父节点的层数加一,根节点的层数定义为1。树中节点层数的最大值称为该树的高度或者深度

边数:一个节点系列k1、k2、...、ki、ki+1,并满足ki是ki+1的父节点,就称为一条从k1到ki+1的路径,路径长度为ki+1-1,即路径中的边数

2.二叉树

最大的度数为2,严格区分左右孩子,就算只有一个子树也区分

将一个普通的树转化为二叉树的方法

遵循:左孩子,右兄弟的原则

1)性质

2)顺序存储

先把要存储的二叉树,转换成满二叉树,然后对满二叉树进行存储

存储原则:从上到下,从左往右依次存入

优点:构建简单,访问方便

缺点:浪费空间

3)链式存储

树节点的结构:

4)创建树

不带头结点

5)树的插入

6)树的遍历

7)线索二叉树

8)赫夫曼二叉树:最优二叉树

9)平衡二叉树

四、图(多对多)

按照有无方向:有向图 无向图

按照有无权值:有权图 无权图

1)顺序存储

有向无权的图的顺序存储

无向有权

有向无权图

有向有权图

2)链式存储

五、算法

是一个有限语句、指令的有序集合

程序 = 数据结构 + 算法

1.算法的特性

2.评价算法的好坏

1)时间复杂度

2)空间复杂度

3.常用的算法

1)查找

2)二分查找

六、哈希表

1.冲突

2.解决冲突

链地址法

3.排序

内部排序

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值