数据结构–顺序表练习
从一给定的顺序表中删除下标为i~j(i≤j,包括i、j)的所有元素
#include <stdio.h>
#include <stdlib.h>
#define maxSize 50
int Tdel(int *L,int length,int s[]) //删除下标i~j的元素
{
int i;
int p = s[0],q = s[1];
int j = length-(q-p+1); //计算新顺序表长度
for(i = p;q < length;i++,q++)
{
L[i] = L[q+1]; //将下标为j之后的元素依次前移
}
return j; //传回删除之后的顺序表长度
}
void outlist(int L[],int length) //依次输出表中元素
{
int i;
for(i=0;i < length;i++)
{
printf("%d ",L[i]);
}
printf("\n");
}
int main()
{
int A[maxSize] = {2,4,1,6,9,0,7};
int n = 7,n2;
int b[2];
printf("未删除的顺序表:"); outlist(A,n);
printf("请输入想要删除的下标i:\n"); //传入需要删除的下标 i~j
scanf("%d",&b[0]);
printf("请输入想要删除的下标j:\n");
scanf("%d",&b[1]); //将需要删除的下标传入一个数组,便于传入函数使用
printf("i:%d,j:%d\n",b[0],b[1]);
n2 = Tdel(A,n,b); //注意删除之后的顺序表长度
printf("删除后的顺序表:");outlist(A,n2);
return 0;
}
运行结果:(输入删除下标:1、4)