//本内容实现顺序表数据输入,删除某一范围内的数据,输出//
//输入:0号位置不存储数据,从1开始,输入n,为线性的元素的个数,再输入n个整数输入left和right(left <= right)left和right是要删除元素的范围。输出:第一行为初始化的线性表,第二行为删除元素的线性表输入输出//
#include<stdio.h>
#include<stdlib.h>
#define maxsize 100;
#define ok 1;
#define error 0;
typedef int status;
typedef struct {
int* elem;
int length;
}seqlist;
void Init(seqlist* L) {
L->elem = new int[100];
L->length = 0;
};
void Operate(seqlist* L, int n)
{
int i;
Init(L);
for (i = 1; i <= n; i++)
{
printf("请输入第%d个元素:", i);
scanf("%d", &L->elem[i]);
}
printf("顺序表如下\n");
for (i = 1; i <= n; i++)
printf("%3d", L->elem[i]);
}
void Delete(seqlist* L,int n,int starts,int step)
{
int i;
int j;
for (j = starts ;j <= n; j++)
L->elem[j ] = L->elem[j+step];
for (i = 1; i <= n-step; i++)
printf("%3d", L->elem[i]);
}
int main()
{
int n;
seqlist L;
int lefts;
int rights;
int step;
int start; //起始位点//
int i;
int starts;
int steps;
int left; //下标//
int right; //下标//
printf("请输入元素个数n:");
scanf("%d", &n);
Operate(&L, n);
printf("请输入要删除的起始位点\n");
scanf("%d",&start);
for (i = 1; i <= n; i++)
{
if (L.elem[i] == start)
starts = i;
};
printf("请输入想要删除的范围:\n");
scanf("%d,%d", &lefts, &rights);
for (i = 1; i <= n; i++) {
if (L.elem[i] == lefts)
left = i;
};
for (i = 1; i <= n; i++) {
if (L.elem[i] == rights)
right = i;
};
step = (right - left)+1;
printf("\n");
Delete(&L,n,starts,step);
return 0;
}
运行结果如图: