实现在顺序表中删除某个区间数据。需要实现下述的三个函数完成该功能。
实现函数:
void CreateList(SqList &L,int n);//建顺序表,L表示顺序表指针,n表示输入数据个数。
void DelNode(SqList &L,int min,int max);//删除区间元素。min,max表示删除的区间
void DispList(SqList L); //输出顺序表内容 ,数据间空格隔开,尾部不能有空格。
数据结构定义
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize]; //存放顺序表元素
int length ; //存放顺序表的长度
} List;
typedef List *SqList;
裁判测试程序样例:
#include <iostream>
#define MaxSize 100000
using namespace std;
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize]; //存放顺序表元素
int length ; //存放顺序表的长度
} List;
typedef List *SqList;
void CreateList(SqList &L,int n);//建顺序表
void DelNode(SqList &L,int min,int max);//删除区间元素。min,max表示删除的区间
void DispList(SqList L); //输出顺序表内容
void DestroyList(SqList &L);//销毁表
int main() {
int i,n;
int min,max;
SqList L;
cin>>n; //输入线性表元素个数
CreateList(L,n);//创建线性表,输入数据保证是有序的
cin>>min>>max;//输入区间值min,max
DelNode(L,min,max);//删除区间元素
DispList( L);//输出线性表
DestroyList(L);//销毁线性表,系统设计好,不需要设计。
}
void DestroyList(SqList &L)
{
delete L;
}
/* 请在这里填写答案 */
输入说明:
共3行。
行1:顺序表元素个数n。
行2:输入n个正整数。
行3:输入删除的区间。
输出说明:
输出删除区间后线性表的数据,数和数之间空格隔开,尾部不能有空格。
如果整个线性表都被删除,则输出线性表为空!
输入样例:
5
1 2 12 9 10
2 9
输出样例:
1 12 10
输入样例:
5
1 2 6 9 10
1 10
输出样例:
线性表为空!
代码如下:
void CreateList(SqList &L,int n)//建顺序表,L表示顺序表指针,n表示输入数据个数。
{
L = new List;
for (int i = 0; i < n; i++)
{
cin >> L->data[i];
}
L->length = n;
}
void DelNode(SqList &L,int min,int max)//删除区间元素。min,max表示删除的区间
{
int newIndex=0;
for(int i=0;i<L->length;i++){
if(L->data[i]<min || L->data[i]>max)
L->data[newIndex++]=L->data[i];
}
L->length=newIndex;
}
void DispList(SqList L)//输出顺序表内容 ,数据间空格隔开,尾部不能有空格。
{
if(L->length==0)
{
cout<<"线性表为空!";
}
for (int i = 0; i < L->length; i++)
{
cout << L->data[i];
if(i<L->length-1)
cout <<" ";
}
}