数据结构---顺序表

    顺序表是在计算机中以数组的形式保存的线性表,采用顺序存储结构的线性表通常称为顺序表
#include<stdio.h>

//构造一个顺序表结构体
typedef struct SeqList{
    int array[100];
    int size;
} SeqList;

头插 时间复杂度O(n)
在表头插入元素value,需要将表中的元素依次向后移动一位,然后将要插入的元素value赋值给数字的首元素

void SeqListPushFront(SeqList *sl,int value){
    for(int i = sl->size;i > 0;i--){
        sl->array[i] = sl->array[i-1];
    }
    sl->array[0] = value;
    sl->size++;
}

头删 时间复杂度O(n)
删除顺序表中的第一个元素,只要将顺序表第二个元素开始,依次向前移动一位,覆盖原来顺序表中的第一个元素

void SeqListPopFront(SeqList *sl,int value){
    if(sl->size == 0){
        printf("顺序表为空\n");
    }
    for(int i = 1;i <= sl->size;i++){
        sl->array[i-1] = sl->array[i];
    }
    sl->size--;
}

中间插入
在数序表第i个位置插入元素value,首先将顺序表第i个位置的元素依次向后移动一个位置,然后将元素value插入第i个位置,先移动最后一个元素,在移动倒数第二个,以此类推

void SeqListPushMiddle(SeqList *sl,int i,int value){
    //判断插入位置是否合法
    if(i < 1||sl->size >100){
        printf("插入的位置不合法!\n");
    }
    //判断顺序表是否已满
    if(sl->size ==100){
        printf("顺序表已满\n");
    }
    for(int k = sl->size - 1;k >= i - 1;k--){
        sl->array[k+1] = sl->array[k];
    }
    sl->array[i-1] = value;
    sl->size++;
}

中间删除
删除顺序表第i个位置的元素,将第i个位置以后的元素依次往前移一个位置

void SeqListDelMiddle(SeqList *sl,int i){
    //判断顺序表是否为空
    if(sl->size < 1){
        printf("顺序表为空\n");
    }

    for(int k = i;k < sl->size;k++){
        sl->array[k] = sl->array[k+1];
    }
    sl->size--;

}

尾插
在顺序表表尾插入元素value,将元素value的值复制给顺序表最后一个元素的下一个元素。尾插首先需要判断顺序表是否已满

void PushBack(SeqList *sl,int value){
    if(sl->size == 100){
        printf("顺序表已满\n");
    }
    sl->array[sl->size] = value;
    sl->size++;
}

尾删
删除表尾怨妇,只需将元素的长度减1,类似出栈操作

void PopBack(SeqList *sl){
    if(sl->size == 0){
        printf("顺序表为空\n");
    }
    sl->size--;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值