zoukankan      html  css  js  c++  java
  • 线性表

    定义

    线性表是由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

    单链表和双向链表比较:

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

     

  • 相关阅读:
    体验最火的敏捷——SCRUM(厦门,2014.1.4)
    再谈僵尸大会(每日会议)
    神马是敏捷?(4)——敏捷不能当饭吃
    XMLHttpRequest
    xml基础
    element 更换主题
    css3中新增的背景属性和文本效果
    transform rotate旋转 锯齿的解决办法
    优化实现Mobile/Bumped Diffuse
    优化实现Mobile Diffuse动态直接光照shader
  • 原文地址:https://www.cnblogs.com/dann/p/2934063.html
Copyright © 2011-2022 走看看