完整代码:
#include <stdio.h>
#define MAXSIZE 20
typedef struct
{
int data[MAXSIZE];
int length;
} sqlist;
void creatlist(sqlist *L, int a[], int n)
{
int i, k = 0;
for (i = 0; i < n; i++)
{
L->data[i] = a[i];
k++;
}
L->length = k;
}
void printlist(sqlist *L)
{
int i;
for (i = 0; i < L->length; i++)
{
printf("%d ", L->data[i]);
}
printf("\n");
}
void deletlist(sqlist *L, int a, int b)
{
if (a == b)
return; // 左右边界相等,则不删除任何元素
int i, j;
for (i = 0; i < L->length; i++)
{
if (L->data[i]>=a&&L->data[i]<=b)
{
for (j = i + 1; j < L->length; j++)
{
L->data[j - 1] = L->data[j];
}
L->length--;
i--;
}
}
}
int main()
{
sqlist L;
int a[MAXSIZE], n, i, x, y;
printf("请输入元素个数:\n");
scanf("%d", &n);
printf("请输入这%d个元素的数值(用空格隔开):\n",n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
creatlist(&L, a, n);
printf("原来线性表为:\n");
printlist(&L);
printf("请输入要删除的区间:\n");
scanf("%d %d", &x, &y);
deletlist(&L, x, y);
printf("删除在区间[%d,%d]元素后的线性表为\n",x,y);
printlist(&L);
return 0;
}
运行结果: