#include<iostream>
#define maxsize 100
using namespace std;
//顺序表
typedef struct Sqlist{
int *data;
int length;
}Sqlist;
void Initlist(Sqlist &L)
{
L.data=new int[maxsize];
L.length=0;
}
void destroy(Sqlist &L)
{
delete[]L.data;
}
void createlist(Sqlist &L)
{
//以-1为结束
int n;
while(cin >> n&&n!=-1)
{
L.data[L.length]=n;
L.length++;//这里长度已经改变了
}
}
//得到序号为i的元素值e ,这里的i为逻辑序号
bool gete(Sqlist L,int &e,int i)//引用在主函数进行提现
{
if(i<1||i>L.length)
{
return false;
}
e = L.data[i-1];
return true;
}
//得到值为e的序号值i
int geti(Sqlist L,int e)
{
for(int i = 0;i<L.length;i++)
{
if(L.data[i]==e)
{
return i+1;
}
}
}
//输出
void disp(Sqlist L)
{
for(int i =0;i < L.length;i++)
{
cout << L.data[i] << " ";
}
cout << endl;
}
//插入,将值为e插入序号i的位置
bool Insert(Sqlist &L,int e,int i)//这里一定要加引用,因为序列进行改变了
{
if(i<1||i>L.length)
{
return false;
}
for(int j = L.length-1;j>=i-1;j--)
{
L.data[j+1]=L.data[j];//0到1
}
L.data[i-1]=e;
L.length++;
return true;
}
//删除序号为i的值
bool Delete(Sqlist &L,int i)
{
if(i<1||i>L.length)
{
return false;
}
for(int j = i;j<=L.length-1;j++)
{
//前移
L.data[j-1]=L.data[j];
}
L.length--;
return true;
}
int main()
{
Sqlist L;
Initlist(L);
createlist(L);
disp(L);
/*
cout << "-----------------------------" << endl;
//得到序号i的值
int i;
cin >> i;
int e;
gete(L,e,i);
cout << "值为:"<<e << endl;
cout << "---------------------------------" << endl;
//得到值为e的序号i
cin >> e;
cout << "序号为:"<<geti(L,e)<<endl;
*/
/*
int e;
cin >> e;
int i;
cin >> i;
Insert(L,e,i);
disp(L);*/
int i;
cin >> i;
Delete(L,i);
disp(L);
}