C语言督学营中级第十节代码打卡 链表

本文详细介绍了在C语言中使用自定义结构体和函数实现链表的基本操作,包括打印、插入和删除。作者指出了一种常见的错误,即不能从后向前赋值,因为这会导致数据丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#define MaxSize 50
typedef int ElemType;
typedef struct{
    ElemType date[MaxSize];
    int len;
}SqList;
void PrintList(SqList L)
{
    for(int a=0;a<L.len+1;a++)
    {
        printf("%3d",L.date[a]);
    }
    printf("\n");

}
bool ListInsert(SqList &L,int i,ElemType e)
{
    if(i<1 || i>L.len+1)
    {
        return false;
    }
    if(L.len>MaxSize)
    {
        return false;
    }
    for(int j=L.len+1;j>=i;j--)
    {
        L.date[j]=L.date[j-1];
    }
    L.date[i-1]=e;
    return true;
}
bool ListDelete(SqList &L,int i,ElemType &del)
{
    if(i<1 || i>L.len)
    {
        return false;
    }
    del=L.date[i-1];//保存要删除的元素的值
    for(int j=i;j<L.len;j++)
    {
        L.date[j-1]=L.date[j];
    }
    L.len--;
    return true;

}
int main()
{
    bool ret;
    SqList L;
    L.date[0]=1;
    L.date[1]=2;
    L.date[2]=3;
    L.len=3;
    ListInsert(L,2,60);
    if(ret=true)
    {
        printf("Insert ElemType success\n");
        printf("del\n");
        PrintList( L);
    }
    if(ret=false)
    {
        printf("Insert Elemtype failed");
    }


    ElemType del;
    ListDelete(L,1,del);
    if(ret=false)
    {
        printf("ListDelet is failed");
    }
    else
    {
        printf("ListDelete success");
        PrintList(L);
    }
    return 0;
}
我自己的错误是一直想用L.date[j-1]=L.date[j],这个是错误的,我的理解是不可以从后面往前面赋值,因为从后面往前面赋值的话,最终只能是一个,因为前面的一直被后面的覆盖掉了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值