数据结构基本知识

本文介绍了数据结构的基本概念,包括数组、链表、栈、队列和树的特性与操作。数组提供随机存取但插入删除不便;链表插入删除高效但查找效率低;栈遵循后进先出原则;队列则实行先进先出。此外,还简述了二叉树和图的定义,以及有向图和无向图的概念。
摘要由CSDN通过智能技术生成

一、基本的数据结构

  1、数组

  2、链表

  3、栈

  4、队列

  5、树

  6、图

一.数组:

1.由n个同种类型的元素以顺序存储的方式存储在计算机内存中,数据元素的类型是一致的

2.每个元素有个下标,下标从0开始标号,数组有数组名字

3.  访问每一个具体元素的方法:数组名[下标]

列如在C语言中让a[0]到a[n]对应1到n则a[0]=1,a[1]=2.....以此类推

4.数组的优点:能够随机存取

数组的缺点:插入删除不方便,需要移动元素

二.链表:

1.结点:数据域+指针域

2.头指针:仅仅是一个变量,没有数据域,存储头结点的起始地址

3.头结点:是和结点一样的,数据域+指针域,指针域存储第一个元素的起始地址

 

4.链表的唯一标识是头指针:头指针定了,第一元素就能找到,第一个结点的数据域放数据本身,指针域放第二个元素的起始地址

 

5.遍历:必须从头开始依次找每一个元素

6.插入:无论往哪个位置插入,都只需要修改结点中的指针域,不需要移动元素

7.删除:无论删除哪个位置的元素,只需要修改结点中的指针域,不需要移动元素

8.链表的优点:插入删除不需要移动元素

链表的缺点:不能随机存储,无论找第几个都得从头开始找

三.栈

线性表1.规定仅在表尾进行插入或删除操作。
                2.后进先出(LIFO结构)
    以顺序a1,a2,a3,a4......an进栈
    an为栈顶元素,所在的栈是栈顶
    a1为栈底元素,所在的栈是栈底
    出栈的顺序是an,a(n-1),......a3,a2,a1
    an元素为后进元素所以an出栈时先出

1、栈是操作受限的线性表,栈,约定只能在一头进行插入删除,允许操作的那一头,叫栈顶,不允许操作的那一头,我们叫栈底

2、栈的逻辑特性:后进先出

3、栈的存储结构:顺序栈  链栈(结点:数据域+指针域(后继元素的起始地址))

4、在栈底的叫栈底元素,在栈顶的叫栈顶元素

 四.队列

 队列:线性表1.限定在表的一端(队尾)插入,另一端(队头)删除
                   2.先进先出(FIFO结构)
    以顺序a1,a2,a3,a4......an进队
    在队列中:a1,a2,a3,a4......an
    a1为队头,an为队尾
    a1元素为先进元素所以a1出队时先出

1、队列是操作受限的线性表

2、约定:插入在队尾,删除在队头

3、队列的逻辑特性:先进先出

4、在队头的叫队头元素,在队尾的叫队尾元素

五.树

根结点的度:这个结点拥有的孩子个数(分支数)

树的度:这棵树中所有结点的度的最大值叫这颗树的度

叶子结点:(终端结点)度为零的结点叫叶子结点

非终端结点:度不为零的叫非终端结点

 深度:树从根结点开始往下数,叶子结点所在的最大层数称为 树的深度

2、二叉树

树中结点的度的最大值为2,树中,所有结点的度只能取0,1,2三个值

如果度为零:叶子结点

如果度为2:必须一个叫左孩子一个叫右孩子

如果度为1:说明只有一个孩子,必须指明是左孩子还是右孩子

3、满二叉树:孩子的数量都为二

二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。

4、存储结构

顺序存储结构:仅适用于满二叉树

链式存储结构:二叉链表:结点(左指针域+数据域+右指针域)左指针域:左孩子的起始地址,右指针域:右孩子的起始地址

六.图:多对多,非线性结构

有向图

 

无向图

 

 

有向网:弧上有权值

 

无向网:边上有权值

 

顶点

弧:弧头顶点,弧尾顶点

度:无向图的度

有向图的度又分为入度和出度

入度:某个顶点的入度是以这个顶点为弧头的弧的数量

出度:某个顶点的出度是以这个顶点为弧尾的弧的数量

图中所有顶点的度的和=边(弧)的二倍

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

L.2626

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

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

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

打赏作者

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

抵扣说明:

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

余额充值