#include<iostream>
using namespace std;
#define MAXSIZE 100
typedef int DataType;
typedef struct
{
DataType data[MAXSIZE]; //通常用一位数组来描述顺序表的数据存储
int SeqLength; /*线性表长度*/
} SeqList;
SeqList *Init_SeqList()//顺序表的初始化算法,将顺序表清空
{
SeqList *L;
L = new SeqList;
L->SeqLength = 0; /*长度置为-1*/
return L;
}
void Define_SeqList(SeqList *L)//顺序表的定义算法
{
cout << "请输入顺序表的长度:" << endl;
int n;
cin >> n;
cout << "请依次输入顺序表中要储存的元素:" << endl;
for (int i = 0; i<n; i++)
{
cin >> L->data[i]; //输入数组元素
L->SeqLength++;
}
}
void Display_SeqList(SeqList *L)//顺序表的输出算法
{
cout << "顺序表中储存的元素为" << endl;
int i;
for (i = 0; i < L->SeqLength; i++)
{
cout << L->data[i] << " ";
}
cout << endl;
}
void GetData_SeqList(SeqList *L)//按照序号查找元素
{
flag://flag1
cout << "你想寻找第几个元素?";
int i;
cin >> i;
if (i > L->SeqLength)
{
cout << "超出顺序表的长度!请重新输入!"<<endl;
goto flag;//flag1
}
cout << "第"<<i<<"个元素是:";
cout << L->data[i - 1]<<endl;
}
void GetNumber_SeqList(SeqList *L)//输出指定元素的序号
{
cout << "输入你想寻找的元素:" << endl;
int n;
int i = 0;
cin >> n;
while (n!=L->data[i]&&i<=L->SeqLength-1)
{
i++;
}
if (i<L->SeqLength - 1)
cout << "你想寻找的元素" << n << "在顺序表中第" << i + 1 << "位" << endl;
else if (n != L->data[i])
{
cout << "你想寻找的元素不在顺序表中" << endl;
}
}
void Insert_SeqList(SeqList *L)//插入元素到指定位置
{
int n, m;
flag://flag2
cout << "输入你想插入的位置"<<endl;
cin >> m;
if (m > L->SeqLength+1||m<1)//首先判断插入位置是否合法
{
cout << "不在顺序表范围内!请重新选择位置!";
goto flag;//flag2
}
cout << "输入你想插入的元素" << endl;
cin >> n;
if (m == L->SeqLength+1)
{
L->SeqLength++;
L->data[m-1] = n;
}
else
{
for (int i = L->SeqLength - 1; i > m - 2; i--)
L->data[i + 1] = L->data[i];
L->data[m-1] =n ;
L->SeqLength++;
}
}
void Delete_SeqList(SeqList *L)//删除指定序号的元素
{
flag://flag3
cout << "输入你想删除第几个元素"<<endl;
int n;
cin >> n;
if (n<1 || n>L->SeqLength)
{
cout << "超出顺序表范围,请重新选择" << endl;
goto flag;//flag3
}
if (n == L->SeqLength)
{
L->data[n - 1] = 0;
L->SeqLength--;
}
else
{
for (int i = n - 1; i < L->SeqLength;i++)
L->data[i] = L->data[i + 1];
L->data[L->SeqLength-1] = 0;
L->SeqLength--;
}
}
void Updata_SeqList(SeqList *L)//修改顺序表中指定序号对应的的元素
{
flag:
cout << "你想修改第几个元素"<<endl;
int n;
cin >> n;
if (n<1 || n>L->SeqLength - 1)
{
cout << "超出顺序表范围,请重新选择" << endl;
goto flag;
}
cout << "请输入修改的元素"<<endl;
int m;
cin >> m;
L->data[n - 1] = m;
}
int main()
{
SeqList *L;//顺序表的定义
L = Init_SeqList();//顺序表的初始化
Define_SeqList(L);//定义顺序表
fflush(stdin);//清空输入缓冲区,作用是防止多输入数据导致错误
flag://flag4
cout<<"*------------------------------------------------------*"<<endl;//从这开始选择功能
cout << "请选择功能:"
<< endl << "1.输出指定序号元素"
<< endl << "2.输出指定元素的序号"
<< endl << "3.删除指定序号的元素"
<< endl << "4.插入元素到指定位置"
<< endl << "5.输出顺序表"
<< endl << "6.修改指定序号对应的元素"
<< endl << "0.退出程序" << endl;
int s;
cin >> s;
switch (s)
{
case 1:GetData_SeqList(L); break;//输出指定序号的元素
case 2:GetNumber_SeqList(L); break;//输出指定元素的序号
case 3:Delete_SeqList(L); break; //删除指定序号的元素
case 4:Insert_SeqList(L); break; //插入元素到指定位置
case 5:Display_SeqList(L); break;//顺序表的输出
case 6:Updata_SeqList(L); break;//修改指定序号对应的元素
default:cout << "谢谢使用!";
break;
}
cout << "是否继续使用顺序表其他功能?1 for 是;2 for 否"<<endl;
int ss;
cin >> ss;
if (ss == 1)
{
goto flag;//flag4
}
system("pause");
return 0;
}
using namespace std;
#define MAXSIZE 100
typedef int DataType;
typedef struct
{
DataType data[MAXSIZE]; //通常用一位数组来描述顺序表的数据存储
int SeqLength; /*线性表长度*/
} SeqList;
SeqList *Init_SeqList()//顺序表的初始化算法,将顺序表清空
{
SeqList *L;
L = new SeqList;
L->SeqLength = 0; /*长度置为-1*/
return L;
}
void Define_SeqList(SeqList *L)//顺序表的定义算法
{
cout << "请输入顺序表的长度:" << endl;
int n;
cin >> n;
cout << "请依次输入顺序表中要储存的元素:" << endl;
for (int i = 0; i<n; i++)
{
cin >> L->data[i]; //输入数组元素
L->SeqLength++;
}
}
void Display_SeqList(SeqList *L)//顺序表的输出算法
{
cout << "顺序表中储存的元素为" << endl;
int i;
for (i = 0; i < L->SeqLength; i++)
{
cout << L->data[i] << " ";
}
cout << endl;
}
void GetData_SeqList(SeqList *L)//按照序号查找元素
{
flag://flag1
cout << "你想寻找第几个元素?";
int i;
cin >> i;
if (i > L->SeqLength)
{
cout << "超出顺序表的长度!请重新输入!"<<endl;
goto flag;//flag1
}
cout << "第"<<i<<"个元素是:";
cout << L->data[i - 1]<<endl;
}
void GetNumber_SeqList(SeqList *L)//输出指定元素的序号
{
cout << "输入你想寻找的元素:" << endl;
int n;
int i = 0;
cin >> n;
while (n!=L->data[i]&&i<=L->SeqLength-1)
{
i++;
}
if (i<L->SeqLength - 1)
cout << "你想寻找的元素" << n << "在顺序表中第" << i + 1 << "位" << endl;
else if (n != L->data[i])
{
cout << "你想寻找的元素不在顺序表中" << endl;
}
}
void Insert_SeqList(SeqList *L)//插入元素到指定位置
{
int n, m;
flag://flag2
cout << "输入你想插入的位置"<<endl;
cin >> m;
if (m > L->SeqLength+1||m<1)//首先判断插入位置是否合法
{
cout << "不在顺序表范围内!请重新选择位置!";
goto flag;//flag2
}
cout << "输入你想插入的元素" << endl;
cin >> n;
if (m == L->SeqLength+1)
{
L->SeqLength++;
L->data[m-1] = n;
}
else
{
for (int i = L->SeqLength - 1; i > m - 2; i--)
L->data[i + 1] = L->data[i];
L->data[m-1] =n ;
L->SeqLength++;
}
}
void Delete_SeqList(SeqList *L)//删除指定序号的元素
{
flag://flag3
cout << "输入你想删除第几个元素"<<endl;
int n;
cin >> n;
if (n<1 || n>L->SeqLength)
{
cout << "超出顺序表范围,请重新选择" << endl;
goto flag;//flag3
}
if (n == L->SeqLength)
{
L->data[n - 1] = 0;
L->SeqLength--;
}
else
{
for (int i = n - 1; i < L->SeqLength;i++)
L->data[i] = L->data[i + 1];
L->data[L->SeqLength-1] = 0;
L->SeqLength--;
}
}
void Updata_SeqList(SeqList *L)//修改顺序表中指定序号对应的的元素
{
flag:
cout << "你想修改第几个元素"<<endl;
int n;
cin >> n;
if (n<1 || n>L->SeqLength - 1)
{
cout << "超出顺序表范围,请重新选择" << endl;
goto flag;
}
cout << "请输入修改的元素"<<endl;
int m;
cin >> m;
L->data[n - 1] = m;
}
int main()
{
SeqList *L;//顺序表的定义
L = Init_SeqList();//顺序表的初始化
Define_SeqList(L);//定义顺序表
fflush(stdin);//清空输入缓冲区,作用是防止多输入数据导致错误
flag://flag4
cout<<"*------------------------------------------------------*"<<endl;//从这开始选择功能
cout << "请选择功能:"
<< endl << "1.输出指定序号元素"
<< endl << "2.输出指定元素的序号"
<< endl << "3.删除指定序号的元素"
<< endl << "4.插入元素到指定位置"
<< endl << "5.输出顺序表"
<< endl << "6.修改指定序号对应的元素"
<< endl << "0.退出程序" << endl;
int s;
cin >> s;
switch (s)
{
case 1:GetData_SeqList(L); break;//输出指定序号的元素
case 2:GetNumber_SeqList(L); break;//输出指定元素的序号
case 3:Delete_SeqList(L); break; //删除指定序号的元素
case 4:Insert_SeqList(L); break; //插入元素到指定位置
case 5:Display_SeqList(L); break;//顺序表的输出
case 6:Updata_SeqList(L); break;//修改指定序号对应的元素
default:cout << "谢谢使用!";
break;
}
cout << "是否继续使用顺序表其他功能?1 for 是;2 for 否"<<endl;
int ss;
cin >> ss;
if (ss == 1)
{
goto flag;//flag4
}
system("pause");
return 0;
}