线性表之顺序表

本文详细介绍了线性表的顺序存储结构——顺序表,包括初始化、销毁、判断空表、获取长度、显示、元素访问、插入、删除等基本操作。通过两个例题展示了顺序表的操作,例如创建、插入、删除、反转等,帮助读者深入理解顺序表的工作原理。
摘要由CSDN通过智能技术生成

线性表的基本运算:

线性表的顺序存储结构简称:顺序表,是把线性表中的所有元素按照其逻辑顺序依次存储到从计算机存储器中指定存储位置开始的一段连续的存储空间中。即利用数组的连续存储空间顺序存放线性表的各元素。

  1. InitList(&L):初始化线性表,构造一个空的线性表L。
  2. DestroyList(&L):销毁线性表,释放线性表L占用的内 存空间。
  3. ListEmpty(L):判线性表是否为空表,若L为空表,则返回 真,否则返回假。
  4. ListLength(L):求线性表的长度,返回L中元素个数。
    表长=L.length+1
    元素a1至an分别存放在L.data[0]至L.data[L. length]中
  5. DispList(L): 输出线性表,当线性表L不为空时,顺序显示 L中各结点的值域。
  6. GetElem(L,i,&e):求线性表L中指定位置的某个数据元素, 用e返回L中第 i(1≤i≤ListLength(L))个元素的值。
  7. LocateElem(L,e):定位查找,返回L中第1个值域与e相等的 位序。若这样的元素不存在,则返回值为0。
  8. ListInsert(&L,i,e):插入数据元素,在L的第 i(1≤i≤ListLength(L)+1)个元素之前插入新的元素e,L的长 度增1。
  9. ListDelete(&L,i,&e):删除数据元素,删除L的第 i(1≤i≤ListLength(L))个元素,并用e返回其值,L的长度减1。

例题1:

1.创建一个顺序表,测试样例:5,9,6,7,4,8,1,3,2
2.在已经建立的线性表的第8个位置插入一个元素x(10),测试样例:5,9,6,7,4,8,1,10,3,2。
3.删除第4个位置上的元素,并输出线性表
4.从顺序表中删除具有最小值的元素(假设值唯一),并由函数返回被删除元素的值,空出的位置由最后一个元素填补。若顺序表为空则提示错误信息信息并退出。
5.编写算法函数 Reverse( )实现将顺序表的倒置。要求算法的空间复杂度为O(1).

函数文件List.cpp:

#include "list.h"
void CreateList(SqList *&L, ElemType a[], int n)
{
   
    int i;
    L=(SqList *)malloc(sizeof(SqList));
    for (i=0; i<n; i++)
        L->data[i]=a[i];
    L->length=n;
}

void InitList(SqList *L)
{
   
    L=(SqList *)malloc(sizeof(SqList));
    L->length=0;
}

//输出顺序表
void DispList(SqList *L)
{
   
    for(int i=0;i<L->length;i++)
        printf(" %d",L->data[i]);
    printf("\n");
}


//判定是否为空表ListEmpty(L)
bool ListEmpty(SqList *L)
{
   
    return(L->length==0);
}

//求线性表的长度ListLength(L)
int ListLength(SqList *L)
{
   
    return(L->length);
}

//求某个数据元素值GetElem(L,i,e)
bool GetElem(SqList *L,int i,ElemType &e)
{
   
    if (i<1 || i>L->length)
        return false;
    e=L->data[i-1];
    return true;
}

//按元素值查找LocateElem(L,e)
int LocateElem(SqList *L, ElemType e)
{
   
    int i=0
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值