/*
*Copyright(c) 2017,YTU CS
*All right reserved.
*作 者:王铭泽.
*完成日期:2017,9,10.
*版 本 号: v1.0
*
*问题描述: 删除元素在[x, y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1);
*输 入: 无
*输 出: 输出删除结果。
*/
#include <iostream>
#include "shunxuList.h"//对头文件的声明,头文件里包含有函数的声明。
using namespace std;
void D(SqList *&L,int x,int y,SqList *&L1)//删除线性表从x位置到y位置的元素。
{
InitList(L1); //初始化新表。
int f=0,w=0; //w存放新长度。
ElemType e;
//逻辑位置与物理位置的转换
x--;
y--;
//容错判断
if(x>y || y>L->length || x<1)
{
cout<<" data x or y error"<<endl;
}
for(f;f<L->length;f++)
{
if(f<x || f>y )
{
L1->data[w++]=L->data[f];
}
}
L1->length=w;
}
int main()
{
//建立A表
SqList *L1,*L2;
ElemType a[6]={1,3,5,7,9,10};
CreatList(L1,a,6);
cout<<"线性表L1的内容为:"<<" ";
D(L1,2,3,L2);
DispList(L2);
cout<<endl;
return 0;
}
本问题是顺序表的应用 ,其实质与项目三无大区别,都是利用顺序表算法库解决实际问题。
运行结果为: