#include<stdio.h>
#define Maxsize 50 //表最大长度
typedef struct
{
int shu[Maxsize]; //顺序表元素
int length; //顺序表当前长度
}SXB;
int Shan(SXB L);
int main()
{
SXB L;
int i=0;
printf("请输入顺序表元素,输入-1结束:");
scanf("%d",&L.shu [i]);
L.length =1;
while(L.shu [i]!=-1&&i<Maxsize-1)
{
i++;
L.length ++;
scanf("%d",&L.shu [i]);
}
if(i<Maxsize-1) //表示没有达到最大限度,由于输入-1然后回车而结束输入,所以要除去-1那个元素
L.length--;
Shan(L);
return 0;
}
int Shan(SXB L)
{
if(L.length ==0)
{
printf("顺序表为空!!\n");
return 0;
}
int i,x,k=0; //k用来表示删除后的数组的下标
printf("请输入要删除的元素值:");
scanf("%d",&x);
for(i=0;i<L.length;i++)
{
if(L.shu[i]!=x) //表示当不是要删除的元素的时候,就还是为自己之前的元素,并且k加一,表示进行下一个比较
{
L.shu[k]=L.shu[i];
k++;
}
//若是要删除的元素,则k不加,i继续加一,一直到不等,然后赋值给为小标为k的数组
}
L.length =k; //删除后的数组下标最大为k-1,所以数组长度也应该一样
printf("删除后顺序表元素位置如下:\n");
for(i=0;i<L.length ;i++)
printf("%5d",L.shu [i]);
putchar('\n');
return 0;
}
08-06
344