数据结构

一、源起

算法处理的(这一组)数据,存在内存里的格式是什么?乱七八糟,随意摆放还是整整齐齐?

数据结构化 方便读取 (该组数据)

所以 数据结构出现了 (和算法相辅相成),目的是为了更加规整,高效的读取数据。

二、主要的数据结构介绍

(一)数组/列表/向量

1.字符串是特殊的数组,由字母 数字 标点符号等组成。

2.数组排序函数 为数组排序 排序算法不特别用。

3.二维数组 -> 矩阵

(二)结构体

1.结构体是将多个变量打包在一起 (有关系的变量)

2.结构体数组:一个数组,里面放很多结构体

(三)链表
1.源起

结构体与数组的限制

创建时就有固定大小,不能动态增加;数组在内存中按顺序存储,在中间插入值困难

应用结构体创造更复杂的数据结构,消除这些限制。

2.介绍

(1)链表由节点组成,每个节点都是一个存有变量和指针的结构体,因此可以看做一个结构体数组

(2)链表是一种灵活的数据结构,灵活性通过每个节点指向下一个节点实现。

(由于有指针的指向,所以数据可以跳跃连接,这就是不同于数组和正常结构体的灵活性)

(3)链表与数组的优缺点:数组查找方便,插入删除等较困难,需要做大量的搬移操作;链表可以通过节点中指针的指向来插入或者删除数据,但查找困难。

(四)队列和栈:

1.队列

(1)特点:先进先出

(2)出队与入队

· 出队:准备一个链表走队列,另外准备一个指针变量p,每次走一个结构体就把其中的next(结构体指针)赋给p,该结构体出队,next连接的下一个结构体排上来,接着操作,把它的next赋给p,出队,下一个排上来......

· 入队:遍历整个链表到结尾,然后把结尾的next指向新人。

2.栈 

(1)特点:先进后出 后进先出(形如一摞书)

(2)出栈与入栈

(五)树与图

1.树

(1)特点:根到叶是单向的(指针的指向是有顺序的)

(2)介绍:

· 把节点改成 存一个变量,两个指针(nextleft nextright),想象 最高的节点为根节点,开两个叉,每个叉叫子节点,继续开两个叉。(第一个节点存放两个指针,每个指针又分别指向一个存放两个指针的结构体...)

· 每个子节点的直属上层节点,叫母节点

· 没有任何子节点的节点 也是 树结束的地方 叫做叶节点。(该节点的指针值为\0,也就是NULL)

· 在这些例子中,节点最多有两个子节点(每个节点中有两个指针变量),因此又叫二叉树

2.图:数据随意连接,指针随意指向,包括循环

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值