数据结构学习-线性表02-1

216 阅读3分钟

We are all in the gutter, but some of us are looking at the stars. 身在井隅,心向璀璨。

-------------------------------------------------------------------------------------------------

线性结构

最常用最简单的数据结构,而线性表是一种典型的线性结构,基本特点是,线性表中的数据元素是有序且有限的。在这种结构中:

1. 存在一个唯一的被称为“第一个”的数据元素

2. 存在一个唯一的被称为“最后一个”的数据元素

3. 除第一个元素外,每个元素均有唯一一个直接前驱

4. 除最后一个元素外,每个元素均有唯一一个直接后继

线性表定义:

是由n(n>=0)个数据元素(节点),a1,a2…an组成的有限序列。该序列中所有的数据节点具有相同的数据类型,其中数据元素的个数n称之为线性表的长度


线性表的抽象数据类型定义

ADT List{        
    数据对象:D={ | ∈ ElemSet, i=1,2,...,n, n≥0 }
    数据关系:R1={ <ai-1 ,ai >| ,∈D, i=2,...,n }
    数据操作:  
        InitList(*L):初始化操作,建立一个空的线性表
        ListEmpty(L):若线性表为空,返回True,否则返回False   
        ClearList(*L):将线性表清空。     
        GetElem(L,i,e):将线性表L中的第i个位置元素赋值给e      
        LocateElem(L,e):在线性表L中查找与给定值e相等的元素,如果查找成功返回该元素在 
                        表中序号表示成功,否则,返回0表示失败        
        ListInsert(*L,i,e):在线性表L中的i个位置插入新元素e    
        ListDelete(*L,i,*e):删除线性表L中地i个位置元素,并用e返回其值     
        ListLength(L):返回线性表L的元素个数
}


线性表的顺序存储结构

顺序存储:

把线性表的节点按逻辑顺序依次存放在一组地址连续的存储单元里。用这种方法存储的线性表简称顺序表。

特点:

线性表的物理顺序与逻辑顺序一致;数据元素之间的关系是以元素在计算机内“物理位置相邻”来体现的。

注:

在高级语言环境下,数组具有随机存取的特性,因此借助数组来表示顺序表

结构:

typedef struct SeqList
{
    ElemType array[MAXSIZE];
    int count;//保存线性表中的元素个数
}SeqList

线性表的链式存储结构

链式存储:

用一组任意的存储单元存储线性表中的数据元素,用这种方式存储的线性表简称为线性链表

特点:

存储单元可连续可不连续,可零散分布任意位置,因此链表中的元素的逻辑顺序与物理顺序不一定相同

结构:

为了正确表示元素间的逻辑关系,在存储每个元素值的同时,还必须存储其后继节点的位置,称为指针或链,这两部分组成了链表的节点结构。


基本操作:

1. 节点赋值

LNode *p;
p=(LNode*)malloc(sizeof(LNode));
p->data=20;
p->next=NULL

2. 指针的操作

-------------------------------------------------------------------------------------------------

   看完点个赞吧,给别人点赞,会让自己觉得自己是一个善良的人。

   关注一下,让自己觉得自己是一个友善的人,开放包容的人,人生会不经意间美妙一点点。

   我的收获期待与你分享,希望一同成长!