c++顺序表的定义与实现

1.c++的顺序表的定义依靠于数组数组在内存中是连续的一片内存因此顺序表的数据都是前后相连的顺序表与链表的最大区别在于指针指针在内存中开辟一片连续的空间给到链表因此链表的内存中的数据有不连续性

顺序表的数据结构为

typedef struct Seqlist{
    int data[Maxsize];
    int length;
}Seqlist;

2.这个数据结构的数组规定了最大的容量以及现有的长度

最大容量一般都是由宏定义部分定义表的最大容量

而长度是通过初始化部分来给出

初始化部分

void Initlist(Seqlist* L)
{
    L->length=0;
}

初始化可以初始化表长和表中的元素

通常初始化的时候一般都是初始化表长表中的元素都是通过插入操作来将所需要的东西给添加到表中

插入部分

bool InsertList(Seqlist* L,int i,int e)
{
    if(i<1||i>L->length+1)
    {
        printf("插入位置不合法");
        return false;
    }if(L->length>Maxsize)
    {
        printf("表满了");
        return false;
    }
    for(int j=i;j>i;j--)
    {
        L->data[j-1]=L->data[j];
    }
    L->data[i-1]=e;
    L->length++;
    return true;
}

插入部分需要将顺序表的实例化对象,插入位置,插入元素 这三个引入到插入操作中首先判断表长如果表长<1则是空表直接返回

如果是大于最大容量则是表长表满了

如果既不表满也不空表则可以进行插入操作插入则是将所有的元素都后移一位将插入的元素插入到顺序表中

最后将顺训表打印输出即可(和数组输出一样)

bool printSeqlist(Seqlist L)
{
    if(L.length==0)
    {
        printf("空表");
    }
    if(L.length>=Maxsize)
    {
        printf("表满了");
    }
    for(int i=0;i<L.length;i++)
    {
        printf("%d\t");
    }
}
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 10
#define bool char
#define true 1
#define false 0
typedef struct Seqlist{
    int data[Maxsize];
    int length;
}Seqlist;
void Initlist(Seqlist* L)
{
    L->length=0;
}
bool InsertList(Seqlist* L,int i,int e)
{
    if(i<1||i>L->length+1)
    {
        printf("插入位置不合法");
        return false;
    }if(L->length>Maxsize)
    {
        printf("表满了");
        return false;
    }
    for(int j=i;j>i;j--)
    {
        L->data[j-1]=L->data[j];
    }
    L->data[i-1]=e;
    L->length++;
    return true;
}
bool printSeqlist(Seqlist L)
{
    if(L.length==0)
    {
        printf("空表");
    }
    if(L.length>=Maxsize)
    {
        printf("表满了");
    }
    for(int i=0;i<L.length;i++)
    {
        printf("%d\t");
    }
}
int main()
{
    Seqlist L;
    Initlist(&L);
    InsertList(&L,1,0);
    printSeqlist(L);
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值