#include
#define MaxSize 50
typedef struct{
ElemType data[MaxSize];
int length;
}SqList;
//在顺序表第i个位置插入元素
bool ListInsert(SqList &L,int i,ElemType e){
if(i<1||i>L.length+1)//判断i的范围是否有效
return false;
if(L.length>=MaxSize)
return false;
for(int j=L.length;j>=i;j--)
L.length[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
return true;
}
第一题
//删除最小值元素,并由函数返回被删元素的值
//空出的位置由最后一个元素填补
//若顺序表为空,显示错误信息并退出运行
#include
using namespace std;
#define MaxSize 500
//定义线性表
typedef struct{
int data[MaxSize];
int length;
}SqList;
//初始化线性表
void InitList(SqList &L,int n)
{
int i=0;
L.length=n;
for(int i=0;i>L.data[i];
}
}
//打印输出线性表
void PrintList(SqList L)
{
for(int i=0;i>n;
InitList(L,n);
cout<<"得到线性表:"<
第二题
//将顺序表逆置,要求空间复杂度为O(1)
#include
using namespace std;
#define MaxSize 500
//定义线性表
typedef struct{
int data[MaxSize];
int length;
}SqList;
//初始化线性表
void InitList(SqList &L,int n)
{
int i=0;
L.length=n;
for(int i=0;i>L.data[i];
}
}
//打印输出线性表
void PrintList(SqList L)
{
for(int i=0;i>n;
InitList(L,n);
cout<<"得到线性表:"<
第三题
//对长度为n的顺序表,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法
//该算法删除表中所有值为x的元素
#include
#define MaxSize 500
using namespace std;
//定义线性表
typedef struct{
int data[MaxSize];
int length;
}SqList;
//初始化线性表
void InitList(SqList &L,int n)
{
int i=0;
L.length=n;
for(int i=0;i>L.data[i];
}
}
//打印输出线性表
void PrintList(SqList L)
{
for(int i=0;i>n;
cout<<"请依次输入线性表元素:"<>x;
DeleteList(L,x);
cout<<"删除元素后得到线性表:"<
第四题
//从有序顺序表中删除值在给定的s和t之间的所有元素(s
#define MaxSize 500
using namespace std;
//定义线性表
typedef struct{
int data[MaxSize];
int length;
}SqList;
//初始化线性表
void InitList(SqList &L,int n)
{
for(int i=0;i>L.data[i];
L.length=n;
}
//打印输出线性表
void PrintList(SqList L)
{
for(int i=0;i=t||L.length==0)
return false;
for(i=0;L.data[i]<=s&&i=L.length)
return false;
for(j=i;j>n;
cout<<"请按照顺序依次输入线性表中的元素:"<>s>>t;
DeleteList(L,s,t);
cout<<"删除相应元素后,得到线性表如下:"<
第五题
//从顺序表中删除s到t之间的元素
//从有序顺序表中删除值在给定的s和t之间的所有元素(s
#define MaxSize 500
using namespace std;
//定义线性表
typedef struct{
int data[MaxSize];
int length;
}SqList;
//初始化线性表
void InitList(SqList &L,int n)
{
for(int i=0;i>L.data[i];
L.length=n;
}
//打印输出线性表
void PrintList(SqList L)
{
for(int i=0;i=t)
return false;
for(i=0;i=s&&L.data[i]<=t)
k++;
else
L.data[i-k]=L.data[i];
}
L.length-=k;
return true;
}
//主函数
int main()
{
SqList L;
cout<<"请输入线性表中元素个数:"<>n;
cout<<"请按照顺序依次输入线性表中的元素:"<>s>>t;
DeleteList(L,s,t);
cout<<"删除相应元素后,得到线性表如下:"<
第六题
//从有序表中删除所有值重复的元素,使表中所有元素的值均不相同
#include
#define MaxSize 500
using namespace std;
//定义线性表
typedef struct{
int data[MaxSize];
int length;
}SqList;
//初始化线性表
void InitList(SqList &L,int n)
{
for(int i=0;i>L.data[i];
L.length=n;
}
//打印输出线性表
void PrintList(SqList L)
{
for(int i=0;i>n;
cout<<"请依次输入线性表中的数据元素:"<
第七题
//7
//将两个有序顺序表合并成为一个新的有序顺序表,并由函数返回结果顺序表
#include
using namespace std;
#define MaxSize 500
typedef struct{
int data[MaxSize];
int length;
}SqList;
//初始化顺序表
void InitList(SqList &L,int n)
{
for(int i=0;i>L.data[i];
L.length=n;
}
//打印输出顺序表
void PrintList(SqList L)
{
for(int i=0;iMaxSize)
return false;
int i=0,j=0,k=0;
while(i>n1;
cout<<"请按照从小到大的顺序依次输入第一个顺序表的数据元素:"<>n2;
cout<<"请按照从小到大的顺序依次输入第二个顺序表的数据元素:"<
第八题
//8
//已知在一维数组A[m+n]中依次存放两个线性表
//编写函数,将两个顺序表的位置互换
#include
using namespace std;
#define MaxSize 500
//定义线性表
typedef struct{
int data[MaxSize];
int length;
}SqList;
//初始化线性表
//线性表包括前后两部分
void InitList(SqList &L,int m,int n)
{
for(int i=0;i>L.data[i];
L.length=m+n;
}
//输出线性表
void PrintList(SqList L)
{
for(int i=0;i>m>>n;
cout<<"请依次输入数据元素:"<
第八题标答
//8 标答
#include
using namespace std;
#define MaxSize 500
//先逆置,再分别将前m个和后n个逆置
void Reverse(int A[],int left,int right,int arraySize)
{
if(left>=right||right>=arraySize)
return;
int mid=(left+right)/2;
for(int i=0;i>m>>n;
cout<<"请依次输入数据元素:"<>A[i];
ExChange(A,m,n,m+n);
cout<<"调换顺序后得到数组如下:"<