`
XiangdongLee
  • 浏览: 86926 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

【线性表】(List)

阅读更多
本文围绕以下三个部分展开:

一、线性表(List)
二、顺序存储结构
三、链式存储结构






一、线性表(List)

        1. 概念

        线性表:0个或多个数据元素的有限序列。(像线一样性质的表)

            线性表的每个数据元素的类型都是相同的。

            A. 是一个序列。(元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。)

            B. 元素个数是有限的。



            类比:幼儿园小朋友按次序排队。


        2. 线性表的抽象数据类型

        (1)基本操作:



        抽象数据类型定义如下:




        (2)复杂的个性化操作

        例题:union操作(实现两个线性表集合A和B的并集操作)

        思想:把存在在集合B中但不存在在A中的数据元素插入到A中即可。即:循环集合B中的每个元素,判断当前元素是否存在A中。若不存在,则插入到A中即可。





二、顺序存储结构

        1. 顺序存储

        指用一段地址连续的存储单元依次存储线性表的数据元素。




        2. 顺序存储方式

        在内存中找了块地儿,通过占位符的形式,把一定内存空间给占了,然后把相同数据类型的数据元素依次存放在这块空地中。

        使用一维数组来实现顺序存储结构。即:把第一个数据元素存到数组下标为0的位置中,接着把线性表相邻的元素存储在数组中相邻的位置。


        3. 顺序存储结构代码和三个属性






        4. 地址计算方法

        存储器中每个存储单元都有自己的编号,称为地址。

        (1)数据元素的序号和存放它的数组下标之间的对应关系:



        (2)假设一个数据元素占c个存储单元,则第i+1个数据元素的存储位置和第i个数据元素的存储位置的关系:



        第i个数据元素的存储位置和第1个数据元素的存储位置的关系:





        (3)随机存取结构:可以随时算出线性表中任意位置的地址,存取时间复杂度均为O(1),具有这样特点的存取结构称为随机存取结构。


        5. 获得元素的操作(GetElem):将线性表L中第i个位置元素值返回。





        6. 插入某个数据元素








        7. 删除某个数据元素









        8. 优缺点





三、链式存储结构



        1. 特点:

        用一组任意的存储单元存储线性表的数据元素。这组存储单元可以连续,也可以不连续。意味着,这些数据元素可以存放在内存中未被占用的任意位置。


        2. 数据域、指针域、指针/链、结点






        3. 头结点、头指针

        (1)头指针:链表中第一个结点的存储位置。

        链表最后一个结点的指针为空(NULL/"^")

        (2)头结点:为了更方便地对链表进行操作,在单链表的第一个结点前附设的一个结点。

        数据域可以不存储任何信息,也可以存储如线性表长度等附加信息。

        指针域存储指向第一个结点的指针。



        (3)二者的异同




        4. 分类

        链式存储结构又有不同形式,分为:单链表、静态链表、循环链表和双向链表。






整理时重点参考:《大话数据结构》程杰著
0
1
分享到:
评论

相关推荐

    线性表list_array的源代码(c语言)

    #ifndef __LIST_H__ #define __LIST_H__ struct list; struct list *list_init(); void list_free(struct list *list); int list_isempty(struct list *list); void list_clear(struct list *list); int list_...

    数据结构线性表的基本操作

    该程序的功能是实现单链表的定义和操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。其中,程序中的单链表(带头结点)结点为结构类型,结点值为整型。单链表操作的选择以菜单形式出现,...

    数据结构实验-实验一线性数据结构的实现与应用

    基于线性表 List1、线性表 List2 实现线性表的应用:运动会信息管理,测试和调试程序。 按要求撰写实验报告、录制程序运行以及讲解程序的视频。报告中要包含算法性能的讨论以及根据实现效率 在问题的多种解决方案中...

    数据结构的线性表设计程序

    ① 初始化线性表void InitList(List *L,int ms) ② 向顺序表指定位置插入元素void InsertList(List *L,int item, int rc) ③ 删除指定元素值的顺序表记录void DeletList1(List *L, int item) ④ 删除指定位置的...

    C语言实现线性表的顺序表示的源码文件

    C语言实现线性表的顺序表示的源码文件 SeqList InitList(); // 初始化线性表 void DestroyList(); // 销毁线性表 void ClearList(); // 清空线性表 int ListEmpty(); // 判断线性表是否为空 int ListLength(); ...

    201-线性表介绍List-T.mp4

    201-线性表介绍List-T.mp4

    01线性表顺序存储_List.c

    01线性表顺序存储_List.c

    数据结构——线性表类模板

    数据结构——线性表类模板 数据结构——线性表类模板 数据结构——线性表类模板

    C语言线性表基本操作

    纯C语言写的线性表基本操作 程序段:/*线性表的操作*/ #include #include typedef int ElemType; struct List { ElemType *list; int size; int MaxSize; }; /*初始化列表,即动态存储空间分配并置L为一个空列表*...

    数据结构线性表实验源代码

    数据结构线性表实验源代码,绝对好用. #define list_init_size 100 #define listcrement 10 #include #include typedef struct { int *elem; int length; int listsize; }sqlist; //构造一个空的线性表 int ...

    线性表的创建与输出c++语言版

    线性表的创建与输出程序c++语言 struct List//首先定义一个表的结构 { Elem *elem; int length; int listsize; }; //创建一个空线性表 Status InitList(List &L) { L.elem = (Elem *)malloc(LIST_INIT_SIZE*...

    2、 掌握线性表的基本操作:初始化,插入,删除,查找,判空,求线性表长度等运算在顺序存储结构和链式存储结构上的实现

    其中,必须实现的线性表基本操作为:InitList、 ClearList、ListEmpty、ListLength、GetElem、PriorElem、ListInsert、ListDelete这8个基本操作,其余的可以选作。 2、 所写源代码编程风格良好,有详细注释。 3、 ...

    线性表的链式实现(数据结构-严蔚敏)

    线性表的链式实现(数据结构-严蔚敏)线性表的链式实现(数据结构-严蔚敏)线性表的链式实现(数据结构-严蔚敏)线性表的链式实现(数据结构-严蔚敏)线性表的链式实现(数据结构-严蔚敏)线性表的链式实现(数据...

    线性表的基本操作

    #define list_size 10 #define increment 5 #define ok 1 #include #include #include typedef struct{ int *elem; int length; int listsize;}sqlist; int initlist(sqlist &L)//构造一个空的线性表 { L.elem=...

    线性表的操作,看看吧

    #define LISTINCREMENT 1 //线性表存储空间分配增量 typedef int Status; //函数类型,其值为为函数结果状态代码 typedef int ElemType; //假设数据元素为整型 typedef struct { ElemType *elem; //存储...

    数据结构实验报告1线性表的顺序存储结构.doc

    数据结构实验报告(1) 学院: 专业: 班级: "姓名 " "学号 " "实验组" " "实验时间 "2011-10-28 "指导教师" "成绩 " " "实验项目名称 "线性表的顺序存储结构 " "实 ... " " "struct List{ " " "ElemType *list; " "

    01线性表顺序存储_List.exe

    01线性表顺序存储_List.exe

    数据结构 线性表 实验代码 C++ 数组

    数据结构 线性表 实验代码 C++ 数组 hust 赵明

    顺序线性表的基本操作

    顺序线性表的基本操作 ...#define LISTINCREMENT 1 //线性表存储空间的分配增量 typedef struct { int *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量 }SqList;

Global site tag (gtag.js) - Google Analytics