数据结构基本概念

   数据结构基本概念    

          数据结构是指数据对象及其相互关系和构造方法,一个数据结构S可以用一个二元组表示为:S=(D,R).其中,D是数据结构中数据的非空有限集合,R是定义在D上的关系的非空有限集合。更详细一点也可以表示成ADT(Abstract data type,抽象数据类型)。ADT定义了数据对象,数据关系,以及数据操作。在数据结构中,结点及结点之间的关系成为数据的逻辑结构,数据在计算机中的存储形式成为数据的存储结构。

         数据结构的分类

          按逻辑结构划分:线性结构(表、栈、队列)、非线性结构(树形结构、图结构)。 

          1.1线性表

    概念:线性表是最简单、最常用的一种数据结构,由相同类型的结点组成的有限序列。

    线性表的存储:

    1.顺序存储:最简单的存储方式。将线性表的结点依次存储在一个数组中。该方法的优点是能随机存取线性表中的任何一个结点,缺点主要有两个:一个是数组的大小通常是固定的,不利于任意增加或减少线性表的结点个数;二是插入和删除线性表的结点时,要移动数组中的其他元素,操作复杂。

    2.链接存储:用链表来存储线性表。最简单的是单向链表。链表的每个结点不但要存储线性表结点信息,还要用一个域存储其后继结点指针。单向链表用指针来体现线性表中结点的先后次序。该方法的优点是线性表中每个结点的实际位置是任意的,给插入和删除操作带来了方便。缺点主要有两个:一是每个结点增加了一个后继指针成分,要花费更多的空间。二是不便随机访问线性表的任一节点。

          1.2栈

    概念:栈是一种特殊的线性表,只允许在同一端进行插入和删除操作。允许插入和删除的一端称为栈顶,另一端称为栈底。具有后进先出的特点。

    栈的存储:

    1.顺序存储:为了指明栈顶位置,需要一个地址变量TOP指出栈顶结点在数组中的下标。

    2.链接存储:用链表来实现的栈称为链接栈。链表的首结点就是栈顶指针TOP,TOP为NULL的链表是空栈。

          1.3队列

    概念:队列是一种特殊的线性表,只允许在一端进行插入,另一端进行删除操作。允许删除的操作的一端称为队首,另一端称为队尾。具有先进先出的特征。

    队列的存储:

    1.顺序存储:可以用顺序存储线性表来表示队列,为了指明当前执行出队运算的队首位置,需要一个指针变量HEAD,为了指明入队操作的队尾,需要一个指针变量TAIL。为了解决多次进行入队和出队操作后队列数组前端空着,后端空间用完的问题,一种方法是把队列中的结点移到数组的前段,修改头指针和尾指针。另一种更好的解决办法是采用循环队列。

    循环队列就是将实现队列的数组的a[n]的第一个元素a[0]和最后一个元素a[n-1]连接起来。队列空的判断条件是head=tail(head赶上tail),对队满的判断条件是head=tail+1(tail赶上head).

    2.链接存储:用链表实现的队列称为链接队列。队列头指针head指向队首结点,尾指针tail指向队尾结点,队尾结点的链接指针指向null。当head为null时,队列为空。

          2.

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

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论 1
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值