zoukankan      html  css  js  c++  java
  • 数据结构-线性表 (栈,队列,串)

    定义:n个元素的有限序列 ,记为(a1,a2,a3,...,an)

    特点:存在唯一表头表尾。除了表头,每个元素只有一个直接前驱。除了表尾,每个元素只有一个直接后驱。

    存储结构

    1 顺序存储 

    地址连续的存储单元,依次存储表中数据元素。使得逻辑相邻的元素,物理位置上也相邻

    优点: 随机存取表中元素。  loc元素位置 L元素所占空间   loc(ai)=loc(a1)+(i-1)*L    

    缺点:插入删除需要移动大量元素。

    2 链式存储

    结点存储元素,结点空间可连续,也可不连续,因此需存储元素的连接的逻辑关系。

    结点空间需要时再申请。

    优点 插入 删除操作方便。

    缺点 增加了存储空间开销,不能随机访问任一点。

    (1)双向链表:每个结点包含两个指针,指明直接前驱和直接后继元素,可在两个方向上遍历链表。

    (2)循环链表:表尾结点的指针指向表中的第一个结点 ,可在任何位置上开始遍历整个链表。

    (3)静态链表:借助数组来描述线性表的链式存储结构。

    .线性表的插入和删除运算
    (1)基于顺序存储结构的运算
    插入元素前要移动元素以挪出空的存储单元,然后再插入元素:
    删除元素时同样需要移动元素,以填充被删除出来的存储单元。

    (2)基于链式存储结构的运算

    在链式存储结构下进行插入和删除,其实质是对相关指针的修改。

    栈:先进后出的线性表 

    进行插入和删除的是栈顶另一端是栈底。

    顺序存储:用地址连续的存储单元,存储从栈顶到栈底的元素,设指针top指示栈顶位置。

    链式存储:链栈,链表的头指针是栈顶指针,插入删除是栈顶进行,无头结点。

    队列:先进先出(FIFO)的线性表

    只允许表的一端插入(队尾,rear),另一端删除(队头,front)。

     

     顺序存储:用地址连续的存储单元,存储元素,设指针队头指针和队尾指针。

    链式存储:链队列,设头结点,头指针指向头结点。判空条件:头指针尾指针的值相同,均指向头结点。

    串:由字符指向的有限序列,取值范围受限的线性表。 

    s为串名,a1,a2...ans1串值,记为s=‘a1,a2,...,an’.

    串的几个基本概念

    ●空串:长度为零的串,空串不包含任何字符。

    ●空格串:由一个或多个空格组成的串。

    ●子串:由串中任意长度的连续字符构成的序列。

    含有子串的串称为主串。

    子串在主串中的位置指子串首次出现时,该子串的第一个字符在主串中的位置。

    空串是任意串的子串。

    V主串: abcbcc
    V子串:cb

    串相等:指两个串长度相等且对应位置上的字符也相同。

    ●串比较:两个串比较大小时以字符的ASCII码值作为依据。

    比较操作从两个串的第一个字符开始进行,字符的ASCII码值大者所在的串为大,

    若其中一个串先结束,则以串较长者为大。

    cfdeg
    cfed

    串的存储结构
    每个字符串的最后要增加个串结束标志。
    顺序存储 用一组地址连续的存储单元来存储串值的字符序列。
    链式存储 当用链表存储串中的字符时,每个结点中可以存储一个字符,也可以存储多个字符,要考虑存储密度问题。


  • 相关阅读:
    顺序容器2(用法)
    运算符重载
    IO相关3(string流)
    IO相关2(文件输入输出)
    C语言--指针
    Java---匿名类
    Andriod开发 --插件安装、环境配置、问题集锦
    ubuntu--vim 技巧
    ubuntu--命令大全
    各浏览器userAgent汇总
  • 原文地址:https://www.cnblogs.com/young-children/p/13404896.html
Copyright © 2011-2022 走看看