#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],这个是错误的,我的理解是不可以从后面往前面赋值,因为从后面往前面赋值的话,最终只能是一个,因为前面的一直被后面的覆盖掉了
C语言督学营中级第十节代码打卡 链表
于 2024-01-28 20:12:30 首次发布