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;

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

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

    循环双链表

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

    (待续...)

  • 相关阅读:
    [HNOI2008]玩具装箱TOY
    UVA1185 Big Number
    01分数规划
    [HNOI2010]弹飞绵羊
    Mobius反演的套路
    MySQL日志
    MySQL事务、锁机制、查询缓存
    MySQL的索引
    MySQL的存储引擎
    HAProxy学习笔记
  • 原文地址:https://www.cnblogs.com/p2liu/p/6048778.html
Copyright © 2011-2022 走看看