• 线性表


    定义

    线性表是由n(n≥0)个数据元素(结点)组成的有限序列。

    特点

    在数据元素的非空有限集中:

    • 存在唯一的一个被称做“第一个”的数据元素。
    • 存在唯一的一个被称作”最后一个“的数据元素。
    • 除第一个之外,集合中的每个数据元素均只有一个前驱。
    • 除最后一个之外,集合中每个数据元素均只有一个后继。

    表示

    大体上分两类,顺序表示和链式表示。

    顺序表

    存储空间是连续地,以数组的形式表示。

    优点:

    可随机存取表中任一元素。(由于物理位置的连续)

    弱点:

    插入和删除元素的操作几乎都要移动另外的元素,移动元素的数目取决于操作的位置。

    数据结构:

    typedef struct{

    ElemType *elem; //存储空间基址

    int length; //当前长度

    int listsize; //当前分配的存储容量(以sizeof(ElemType)为单位)

    }

    链表

    顺序表在逻辑关系上相邻的两个元素,在物理位置上也相邻的,而链表则不是。

    优点:

    插入和删除元素不需要移动元素。

    缺点:

    不能随机存取元素。

    分类:

    线性链表(或称单链表)、静态单链表、循环链表、双向链表。

    数据结构:

    单链表
    typedef struct LNode{

    ElemType data;

    struct Lnode *next; //指向下一个元素的指针

    }LNode,*LinkList;

     

    静态单链表(用于不设”指针“类型的高级程序设计语言中使用链表结构)

    typedef struct{

    ElemType data;

    int cur; //下一个元素在数组中的下标

    }component,SLinkList[MAXSIZE];

     

    循环链表(结构与单链表一样,只是尾结点指向头结点)

     

    双向链表

    typedef struct DuLNode{

    ElemType data;

    struct DuLNode *prior;

    struct DuLNode *next;

    }DuLNode,*DuLinkList

    单链表和双向链表比较:

    双向链表可以说是单链表的增强,增加了一个指针域,克服了单链表只能顺指针往后寻查其他结点的问题。

     

  • 相关阅读:
    OSG绘制几何图形
    OSGMFC
    OSG第一个Demo
    线性四叉树十进制Morton码计算示例
    单源最短路径——Dijkstra算法学习
    .Net内存优化的几点经验
    强制回收和IDisposable.Dispose方法
    七参数计算正确性验证——Coord软件使用
    [转载]windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解
    T4自动生成数据库C#实体类学习(1)
  • 原文地址:https://www.cnblogs.com/dann/p/2934063.html
Copyright © 2020-2023  润新知