顺序表的按位置删除是顺序表中删除操作中比较简单的,只要把相对于的位置上的数据删除后,然后把删除位置后面的位置向前逐一移动,然后返回顺序表长度减1后的长度。
#include <stdio.h>
#define N 50
int a[N]={0};
void CreateArr(int *a, int len) //创建顺序表
{
printf("请输入%d个整型数据:\n",len);
for(int i=0; i<len; i++)
scanf("%d",&a[i]);
printf("数据输入完毕.\n");
}
void PrintArr(int *a, int len) //输出顺序表
{
printf("输出数据.\n");
for(int j=0; j<len; j++)
printf("%-3d",a[j]);
printf("\n");
}
int DeleteElement(int *a, int len, int pos) //按位置删除
{
if(pos<1 || pos>len)
{
printf("删除的位置不存在.\n");
return len;
}
for(int i=pos-1; i<len; i++)
a[i] = a[i+1];
return (len-1);
}
void main()
{
int n;
int pos;
printf("请问你想输入几个整型数据.\n");
scanf("%d", &n);
CreateArr(a, n);
PrintArr(a, n);
printf("请输入你要删除的位置:\n");
scanf("%d", &pos);
n=DeleteElement(a, n, pos);
PrintArr(a, n);
}