线性表顺序存储及相关操作(创建,插入,删除,遍历)

本文介绍了线性表的基本概念,包括线性表的定义和特性,特别关注了线性表的顺序存储结构。通过C语言实现了线性表的创建、插入、删除和遍历操作,详细阐述了在顺序存储结构中插入和删除元素时的数据移动过程。
摘要由CSDN通过智能技术生成

线性表类型的定义

线性表是由同类数据元素构成的有序序列的线性结构

表中元素个数(n>=0)称为线性表的长度,n=0时称为空表。

在复杂线性表中,一个数据元素可以由若干个数据项(item)组成。这种情况下,常把数据元素称为记录(record),含有大量记录的线性表称为文件(file)。

线性表中的数据元素可以是各种各样的,但是同一线性表中元素必定具有相同的特性,即统一数据对象相邻元素之间存在着序偶关系。
抽象数据类型线性表的定义:

ADT List{
   
    数据对象:D={
   ai|ai∈ElemSet,i=1,2,...,n,n>=0}
    数据关系:R1={
   <ai-1,ai>|ai-1,ai∈D,i=2,...,n}
    基本操作:
        InitList(List &L)                  构造空的线性表
        DestoryList(List &L)               销毁线性表
        ClearList(List &L)                 将线性表重置为空表
        ListEmpty(List L)                  判断线性表是否为空
        ListLength(List L)                 输出线性表的长度
        GetElem(List L,int i,ElementType &e)   用e返回表中的第i个元素值
        ListInsert(List &L,int i,ElementType e)    在位序i前面插入新元素e,表长加一
        ListDelete(List &L,int i,ElementType e)    删除第i个数据元素,并用e返回其值,L的长度减
        ListTraverse(List L,visit()) 	依次对L中的每个元素调用函数visit()
}

线性表的顺序表示和实现

线性表的顺序存储:
线性表的顺序存储结构示意图

存储地址 b b+l b+(i-1)*l b+(n-1)l b+nl b+(maxlen-1)
内存状态 a1 a2 ai an
下标 1 2 i n 空闲 空闲 空闲

以下为伪代码描述:

#define LIST_INIT_SIZE 100  //线性表存储空间的初始分配量
#define LISTINCREMENT 10  //线性表存储空间的分配增量
typedef struct{
   
    ElementType *elem;  //存储空间基址
    int length;  //当前长度
    int listsize  //当前分配的存储容量
}SqList;


//构造一个空的线性表
Status InitList_Sq(List &L){
   
    L.elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));  //动态分配内存
    if(!L.elem) exit(OVERFLOW);  //存储分配失败
    L.length = 0;  //空表长度为0
    L.listsize = LIST_INIT_SIZE;  <
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值