现在的位置: 首页 > 综合 > 正文

C# 线性表的实现

2012年10月05日 ⁄ 综合 ⁄ 共 10115字 ⁄ 字号 评论关闭
      线性表的基本操作定义如下:
      

线性表的基本操作

      (1):顺序表的定义:指内存中用一块连续的空间依次存储线性表的每个元素。因为在C#中数组在内存中占用的存储空间就是一组连续的存储区域,具有随机存储的特点,逻辑上相邻的数据元素物理上也相邻。代码实现如下:
      

顺序表的实现

      注释:maxSize表示顺序表的容量,data存储顺序表的元素,last指示最后一个元素的位置。
      a.插入操作:判断顺序表是否已满和插入的位置是否正确,表满或者插入的顺序不正确不能插入;如果表满或者插入的位置的正确,咋将a1~~ai依次向后移动,为新的数据元素空出位置,用循环来实现;将新的元素插入到空出的第i位置上;修改last,使它指向顺序表的最后一个元素。插入的时间复杂度O(N)。
      b.删除元素:判断顺序表是否为空和删除的位置是否合理,表空或删除的位置不合理,不能删除;如果表不空和删除的位置正确,则将a1~ai依次向前移动,用循环来实现;修改last指针,使它指向顺序表的最后一个元素。时间复杂度为O(N)。
      (2):单链表是指用一组任意的存储单元来存储线性表中的数据元素。
        

单链表节点的定义

      

单链表的实现

      注释:线性表的顺序存储和链式存储各有优缺点,线性表如何存储取决于使用场合。如果不需要经常在线性表中进行插入和删除,那么线性表适合顺序存储;如果线性表需要经常插入和删除,而不经常查找,则应链式存储。
       a.插入操作:前插操作和后插操作,时间复杂度:O(N)。
       b. 删除操作,时间复杂度O(N)
      (3):单链表的创建
            1):在单链表的头部插入节点建立
            2):在单链表的尾部插入节点建立
     (4):双链表
     (5):循环链表

抱歉!评论已关闭.