删除顺序表中所有值为m的,输出删除后的顺序表
方法为将所有L个不为m的存入顺序表的前L个位置,最后将顺序表长度缩减;代码如下:
#include<stdio.h>
#include<stdlib.h>
#define initsize 100
typedef int Datatype;
typedef struct{
Datatype *data;
int n;
int maxsize;}seqlist;
void Init(seqlist *L)
{
L->data=(Datatype *)malloc(sizeof(Datatype)*initsize);
L->n=0;
L->maxsize=initsize;
}
void creat(seqlist *L,int n)
{
int i=0;
for(i=0;i<n;i++)
scanf("%d",&L->data[i]);
L->n=n;
}
void show(seqlist L)
{
for(int i=0;i<L.n;i++)
{if(i!=L.n-1)
printf("%d ",L.data[i]);
else
printf("%d\n",L.data[i]);
}
}
void deletem(seqlist *L,int m)
{ int j=0,a[(L->n)+2];
for(int i=0;i<L->n;i++)
{
if(L->data[i]!=m)
{
L->data[j]=L->data[i];
j++;
}
else
continue;
}
L->n=j;
}
void main()
{ int n,m;
seqlist L;
Init(&L);
printf("请输出顺序串的长度");
scanf("%d",&n);
printf("请输入初始值:");
creat(&L,n);
printf("你创建的顺序表为:\n");
show(L);
printf("请输入你要删除的元素:");
scanf("%d",&m);
deletem(&L,m);
printf("删除后的顺序表为");
show(L);
system("pause");
}