zoukankan      html  css  js  c++  java
  • 重温数据结构——(2)

    线性表

    线性表是最简单且最常用的一种数据结构。下面将 介绍它的概念、存储方法和基本运算:

    线性表的基本概念:

        若至少含有一个结点,则除了起始结点有且仅有一个前趋结点;除了终端结点其他结点有且仅有一个后继结点。

    基本运算:

        通过以下一些基本运算来实现一些特定操作,或者实现一些实际问题:

        1.初始化InitList,建立一个空表sq

        2.求线性表的长度

        3.求线性表中第i个元素GetElem(sq,i)

        4.按值查找Locate(sq,x)

        5.插入元素InsElem(sq,x,i)

        6.删除元素DelElem(sq,i)

        7.输出元素值DispList(sq)

    储存结构:

    顺序表

    特点:逻辑结构中相邻的结点在存储结构中仍然相邻

    定义如下:

    #define  MAXSIZE 100

    typedef struct

    {

        ElemType data[MAXSIZE];//存放数据域

        int len;//当前线性表长度

    } Sqlist;

    优点:用一维数组实现,空间利用率高;能随机存取

    缺点:操作不方便

    单链表

    特点:在结点中使用指针来串联成线性表,使得逻辑上相邻的结点,在物理结构上可以不相邻

    定义如下:

    typedef struct node

    {

        ElemType data;//数据域

        struct node *next;//指针域,指向下一个相邻节点

    } Slink;

    优点:物理结构上灵活,操作方便;查找后继结点方便

    缺点:不可随机存取;查找前趋结点比较困难

    循环单链表

    特点:与单链表相同,只是最后一个结点的指针域不为空,而是指向头结点,从而构成一个环

    双链表

    特点,与单链表相比,多了一个前趋指针

    定义如下:

    typedef struct node

    {

        ElemType data;//数据域

        struct node *prior,*next;//分别指向前趋结点和后继结点的指针

    } Dlink;

    优点:保持了单链表的优势之后,又使查找前趋结点变的方便了;

    缺点:需要额外的指针域,空间利用率降低;

    循环双链表

    特点:保持双链表的基础上,是尾结点与头结点相连

    (待续...)

  • 相关阅读:
    python基础学习8(浅拷贝与深拷贝)
    适配器模式(Adapter)
    NHibernate的调试技巧和Log4Net配置
    查看表字段的相关的系统信息
    Asp.net MVC 3 开发一个简单的企业网站系统
    ie8 自动设置 兼容性 代码
    同时安装vs2010和VS2012后IEnumerable<ModelClientValidationRule>编译错误
    各种合同样本
    使用远程桌面的朋友可能经常会遇到“超出最大允许连接数”的问题,
    弹出窗口全屏显示:window.showModalDialog与window.open全屏显示
  • 原文地址:https://www.cnblogs.com/p2liu/p/6048778.html
Copyright © 2011-2022 走看看