顺序表概念及操作

  1. 线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构,两者属于不同层面的概念,不能混淆。
  2. 线性表的顺序存储称为顺序表。它是一组地址连续的存储单元。这使得逻辑上相邻的两个元素在物理位置上也相邻。
  3. 线性表的顺序存储类型描述为:
    静态分配:
#define MaxSize 50  //定义线性表的最大长度
typedef struct
{
    ElemType data[MaxSize];//顺序表的元素
    int length;           //顺序表的当前长度
}SqList;

动态分配:

#define InitSize 100  //表长度的初始定义
typedef struct
{
    ElemType *data;  //指示动态分配数组的指针
    int MaxSize,length;//数组的最大容量和当前个数
}SeqList;

初始的动态分配语句为:
L.data=(ElemType*)malloc(sizeof(ElemType)*InitSize);
顺序表最主要的特点是可以进行随机访问特性,即通过首地址和元素序号可以在O(1)的时间内找到指定的元素,缺点是插入和删除需要移动大量元素。

#include <stdio.h>

#define MaxSize 100

typedef struct
{
    int data[MaxSize];
    int length;
}SqList;

bool ListInsert(SqList &L,int i,int e)
{
    if(i<1||i>L.length+1)
        return false;
    if(L.length>=MaxSize)
        return false;
    for(int j=L.length;j>=i;j--)
    {
        L.data[j]=L.data[j-1];
    }
    L.data[i]=e;
    L.length++;
    return true;
}

bool ListDelete(SqList &L,int i,int e)
{
    if(i<1||i>L.length)
        return false;
    e=L.data[i-1];
    for(int j=i;j<L.length;j++)
    {
        L.data[j-1]=L.data[j];
    }
    L.length--;
    return true;
}

int LocateElem(SqList &L,int e)
{
    int i;
    for(i=0;i<L.length;i++)
    {
        if(L.data[i]==e)
        {
            return i+1;
        }
    }
    return 0;
}

注意
顺序表的顺序存储结构是一种随机存取的存储结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值