2023-03-22 顺序表基本操作

发布时间 2023-03-22 21:22:14作者: 正方形的被子
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define initsize 10

typedef struct 
{
    int *data;
    int length;
    int maxsize;
}SqList;

void increaselen(SqList *L,int len)
{
    int *p=L->data;
    L->data = (int *)malloc((L->maxsize+len)*sizeof(int));
    for(int j=0;j<L->maxsize;j++)
    {
        L->data[j]=p[j];
    }
    L->maxsize+=len;
    free(p);
}

void initlist(SqList *L)
{
    L->data=(int *)malloc(initsize*sizeof(int));
    for(int i=0;i<initsize;i++)
    {
        L->data[i]=0;
    }
    L->length=0;
    L->maxsize=initsize;
}

bool insertlist(SqList *L,int i,int e)
{
    if(i<1||i>(L->length+1))//判断是否与上一个元素相邻
    {
        return false;
    }
    if(L->length>=L->maxsize)
    {
        return false;
    }
    for(int j=L->length;j>=i;j++)
    {
        L->data[j]=L->data[j-1];
    }
    L->data[i-1]=e;
    L->length++;
    return true;
}
int main()
{
    SqList L; 
    initlist(&L);
     
    insertlist(&L,1,1);
    insertlist(&L,2,2);
    insertlist(&L,3,3);
    insertlist(&L,4,4);
    insertlist(&L,5,5);

    insertlist(&L,6,6);
    insertlist(&L,7,7);
    // insertlist(&L,8,8);
    // insertlist(&L,9,9);
    // insertlist(&L,10,10);

    // increaselen(&L,10);
    for(int i=0;i<initsize;i++)
    {
        printf("%d ",L.data[i]);
    }
    printf("\n");
    printf("%d",L.length);
    return 0;

}