完善教材中数组顺序表初始化、特定位置插入元素、删除特定值等操作
#include <iostream> using namespace std; //顺序表删除所有值为x的元素 #define Maxsize 100 typedef int ElemType; //定义结构体数组 typedef struct { ElemType elem[Maxsize]; int last; }SeqList; //初始化数组 void initList(SeqList *L) { ElemType e; L->last=0; printf("请输入元素:\n"); scanf("%d",&e); while(e!=0) { if((L->last)>Maxsize) printf("表已满,无法继续输入"); L->elem[L->last]=e; (L->last)++; scanf("%d",&e); } L->last--; } //在数组的第i个位置插入元素e int InsList(SeqList *L,int i,ElemType e) { int k; if(i<1||i>L->last) { printf("插入位置i不合法"); return 0; } if((L->last)>Maxsize) { printf("表已满"); return 0; } for(k=L->last;k>=i;k--) { L->elem[k+1]=L->elem[k]; } L->elem[k+1]=e; L->last++; return 0; } //删除数组值为x的元素 void delx(SeqList *L,int x) { int i=0,j=0; while(i<=(L->last)) { if((L->elem[i])!=x) { L->elem[j]=L->elem[i]; i++; j++; } else i++; } L->last=j-1; } //打印数组 void show(SeqList *L) { int i=0; for(i=0;i<=L->last;i++) { printf("%d ",L->elem[i]); } printf("\n"); } int main() { int i; ElemType e1,e2; SeqList L; initList(&L); printf("%d\n",L.last); printf("请输入要插入的数和插入的位置:"); scanf("%d %d",&e1,&i); InsList(&L,i,e1); printf("插入后的数组为:\n"); show(&L); printf("请输入要删除的数:"); scanf("%d",&e2); delx(&L,e2); printf("删除后的数组为:\n"); show(&L); return 0; }
实验结果如下: