删除顺序表中S-T之间的元素
代码如下:
#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)
{
for(int i=0;i<n;i++)
{
scanf("%d",&L->data[i]);
}
L->n=n;
}
int deletem(seqlist *L,int k,int l)
{ int m,i,j;
if(k>l||L->n==0)
{printf("输入非法!");
return 0;}
else
{
for(i=0;i<L->n&&L->data[i]<k;i++);
if(i>=L->n)
{printf("输入非法!");
return 0;}
for(j=i;j<L->n&&L->data[j]<=l;j++);//引号莫忘
for(m=i;j<L->n;m++,j++)
L->data[m]=L->data[j];
L->n=m;
return 1;
}
}
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 main()
{
int n,m,k,h;
seqlist L;
init(&L);
printf("请输出顺序串的长度");
scanf("%d",&n);
printf("请输入初始值:");
creat(&L,n);
printf("你创建的顺序表为:\n");
show(L);
printf("请输入你要删除的元素范围:");
scanf("%d %d",&m,&k);
h=deletem(&L,m,k);
if(h==1)
{printf("删除后的顺序表为");
show(L);
system("pause");}
else
system("pause");
}
在写实现函数的时候有点小马虎,有两个单独for循环忘记加引号了,浪费了一些时间,这些事情还是要避免的!