1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| //顺序表的删除
#include <stdio.h> #include<stdbool.h> //可以使用bool了
#define MaxSize 10 //定义最大长度
typedef struct{ int data[MaxSize]; //用静态的“数组”存放数据元素 int length; //顺序表的当前长度 }SqList; //顺序表的类型定义
//基本操作:初始化一个顺序表 void InitList(SqList *L){ for(int i=0;i<MaxSize;i++){ L->data[i]=0; //将所有数据元素设置为默认初始值 } L->length=0; //顺序表初始长度为0 }
bool ListDelete(SqList *L,int i,int *e){ if(i<1 || i>L->length){ //判断i的范围是否有效 return false; } *e=L->data[i-1]; //将被删除的元素赋值给e for(int j=i;j<L->length;j++){ //将第i个位置后的元素前移 L->data[j-1]=L->data[j]; } L->length--; //线性表长度减1 return true; }
int main(){ SqList L; //声明一个顺序表 InitList(&L); //初始化顺序表 //...此处插入几个元素 int e=-1; //用变量e把删除的元素“带回来” if(ListDelete(&L, 3, &e)){ printf("已删除第3个元素,删除元素值为%d\n",e); } else{ printf("位序i不合法,删除失败\n"); } return 0; }
|