数据结构-顺序插入删除简单超详细代码

第一次学,网上摸索出来的,结合自己的操作,大家不会的可以参考一下,是比较完全的了

#include<stdio.h>
#include<stdlib.h>
#define Max 10
#define TURE 1
#define FALSE 0

typedef int Elemtype;
typedef int Status;
typedef struct list{
    Elemtype *elem;
    int len;
}List;

//初始化
void List_Init(List *L){    
    L->elem=(Elemtype *)malloc(Max*sizeof(Elemtype));
    L->len=0;   //初始化数据长度;
}  

//插入
Status List_Insert(List *L,int i,Elemtype data){
    if(L->len==Max){        //如果插入的长度大于给定的大小 
        printf("The storage space is full!\n");
        return FALSE;
    }
    if(i<1 || i>L->len+1 || L==NULL){       //插入的位置小于1,大于插入的位置,表空
        printf("Position input error!\n");
        return FALSE;
    }
    
    for(int j=Max-1;j>=i-1;j--){            //循环条件是i-1,也就是i-1之后的数都要挪一位
        L->elem[j+1]=L->elem[j];
        
    }
    L->elem[i-1]=data;      //两个用处:1、赋值用的   2、腾出位置放值
    L->len++;       //len不是空的,因为主函数赋值的时候这里已经在++了  ,以及最后给表加一个位置
    return TURE;
}

//删除
Status Delete_Insert(List *L,int pos){      //位置插入
    int i,j;
    if(L->len==0){      //表为空
        printf("The list is empty!\n");
        return FALSE;
    }  
    for(i=pos,j=pos;L->elem[i]!='\0';i++){      //i和j等于插入的位置,从插入的位置开始后一个覆盖前一个
            L->elem[i]=L->elem[++j];
    }
    L->len--;   //表长减1
    return TURE;
}

//输出
void Show_List(List *L){
    for(int i=0;i<L->len;i++){
        printf("%d ",L->elem[i]);
    }
    printf("\n");
}

int main(){
    int i;
    List L;
    List_Init(&L);
    for(int i=0;i<Max-1;i++){
        List_Insert(&L,i+1,i+1);    //赋值,那些判断条件都用不上,就单纯传
    }
    printf("Before insert:\n");
    Show_List(&L);

    printf("After insert:\n");
    List_Insert(&L,7,99);
    Show_List(&L);

    printf("After Delete:\n");
    Delete_Insert(&L,6);
    Show_List(&L);

}


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值