大话数据结构-- 第三章 线性表

        线性表:零个或多个数据元素的有限序列。

        线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。

        线性表用数学语言来定义:

            若线性表记为(a1,a2,a3,...,a(i-1),ai,a(i+1),...,an),则表中a(i-1)领先于ai,ai领先于a(i+1),则称a(i-1)是ai的直接前驱元素,a(i+1)是ai的直接后继元素,。当i=1,2,3,...n-1时,ai有且只有一个直接后继元素,当i=2,3,4,...n时,ai有且只有一个前驱元素。

        线性表的顺序存储结构,指的用一段地址连续的存储单元依次存储线性表的数据元素

        线性表插入算法的思路:

            1.如果插入位置不合理,抛出异常。

            2.如果线性表长度大于等于数组长度,则抛出异常或动态增量数组。

            3.从最一个后元素的开始向前遍历到第i个位置,分别将他们都向后移动一个位置。

            4.将要插入的数据填入位置i处。

            5.表长度加一。

        线性表删除算法的思路:

            1.如果删除位置不合理,抛出异常。

            2.去出删除元素。

            3.从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一个位置。

            4.表长减一。

        线性表顺序存储结构的优缺点:

  •      优点:    
    • 1.无需为表示表中的元素之间的逻辑关系而增加额外的存储空间
    • 2.可以快速地存取表中的任意位置的元素。  ​​​​​​​​​​​​​​
  •      缺点:
    • 1.插入和删除需要移动大量的数据。
    • 2.当线性表的长度变化较大时,难以确定存储空间的容量。
    • 3.造成存储空间的“碎片”。
  • ​​​​​​​       获得单链表第i个数据的算法思路:
    • ​​​​​​​1.声明一个节点p指向链表第一个节点,初始化j从1开始。
    • ​​​​​​​2.当j<i时就遍历链表,让p的指针向后移动,不断指向下一个节点,j累加1;
    • 3.入到链表结尾p为空,则说明第i个元素不存在。​​​​​​​
    • 4.否则查找成功,返回节点p的数据。

​​​​​​​​​​​​​​

        

猜你喜欢

转载自my.oschina.net/u/3298130/blog/1632527