数据结构复习笔记(一)——静态顺序表(C语言)

定义结构体

typedef struct{
    int data[MAXSIZE]; //MAXSIZE为最大容量
    int length; //当前长度
} Array;

创建顺序表

/*
需要接受一个已知的数组,以及该数组的长度
按顺序将数组内的值,赋给顺序表结构体中的数组
返回一个顺序表的结构体
*/
Array array_create(int a[],int length){
    Array b;
    int i=0;
    for(i;i<length;i++)
        b.data[i]=a[i];
    b.length=length;
    return b;
}

打印顺序表

void array_print(Array a){
    int i=0;
    for(i;i<a.length;i++)
        printf("%d ",a.data[i]);
    printf("\n");
}

插入

/*
判断插入前是否超出最大容量,以及插入位置是否合理
判断插入后是否超出最大容量
将插入位置后面的数据全部往后移动一个位置
插入数据
顺序表长度增加
*/
bool array_insert(Array *a,int i,int e){
    if(i<1||i>a->length+1)
        return false;
    if(a->length>=MAXSIZE)
        return false;
    int j=a->length;
    for(j;j>=i;j--)
        a->data[j]=a->data[j-1];
    a->data[i-1]=e;
    a->length+=1;
    return true;
}

这里注意不能直接使用a.length,应该使用(*a).length,也可以写作a->length。

删除

bool array_delete(Array *a,int i){
    if(i<1||i>a->length)
        return false;
    for(;i<a->length;i++)
        a->data[i-1]=a->data[i];
    a->length-=1;
    return true;
}

这里可以多传一个指针进去,带出删掉值。

按值查找

int serchwith_value(Array a,int v){
    int i;
    for(i=0;i<a.length;i++)
        if(a.data[i]==v)
            return i+1;
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值