实验内容
1、建立一个顺序表,输入n个元素并输出;
2、查找线性表中的最大元素并输出;
3、在线性表的第i个元素前插入一个正整数x;
4、删除线性表中的第j个元素;
5、将线性表中的元素按升序排列;
6、将线性表中的元素就地逆序(只允许用一个暂存单元);
#include<stdio.h>
#include<iostream>
#define MAXSIZE 100
using namespace std;
typedef int Sqlist[100];
//函数声明
void InitList(Sqlist L, int n);//初始化线性表
int putlist(Sqlist L, int n);//输出线性表
void maxlist(Sqlist L, int n);//找出最大值并输出
void Insert(Sqlist L, int i,int n, int x);//在线性表的第i个元素前插入一个正整数x
void Deletelist(Sqlist L, int i, int n);//删除线性表中第i个元素
void ranklist(Sqlist L, int n);//对线性表按升序排列
void inverselist(Sqlist L, int n);//将线性表中的元素就地逆序
int main()
{
int n,i,x,a;
Sqlist L;
while (!0)
{
cout << "0:初始化线性表 \n1:输出线性表\n2:找出最大值并输出\n3:在线性表的第i个元素前插入一个正整数x\n4:删除线性表中第i个元素\n5:对线性表按升序排列\n6:将线性表中的元素就地逆序\n7:退出操作\n";
cout << "请输入您要进行的操作:";
cin >> a; //输入执行代号
switch (a)
{
case(0):
cout << "请输入您希望线性表的长度:";//提示
cin >> n;
InitList(L, n);
break;
case(1):putlist(L, n); break;
case(2):maxlist(L, n); break;
case(3):
cout << "请依次输入在第几个元素前插入以及插入元素的值:";//提示
cin >> i >> x;
Insert(L, i, n, x);
n = n + 1;
break;
case(4):
Deletelist(L, i, n);
n = n - 1;
break;
case(5):ranklist(L, n); break;
case(6):inverselist(L, n); break;
}
if (a == 7)break;
}
}
void InitList(Sqlist L, int n) //线性表结构初始化
{
int i;
cout << "请输入元素:"; //提示
for (i = 1; i <= n; i++)
{
cin >> L[i];
}//输入元素值
}
int putlist(Sqlist L, int n)
{
cout << "当前的线性表为:";//提示
for (int i = 1; i <= n; i++)
{
cout << L[i] << " ";
if (i == n)cout << "\n";
}
return 0;
}
void maxlist(Sqlist L, int n)
{
int max = 0;
for (int i = 1; i <= n; i++)
{
if (max > L[i])max = max;
else max = L[i];
}
cout << "最大值为:";//提示
cout << max<<"\n";
}
void Insert(Sqlist L, int i, int n, int x)
{
int j;
while (i<1 || i>n)
{
cout << "i值错" << endl;
cout << "请重新依次输入在第几个元素前插入以及插入元素的值:";
cin >> i >> x;
}
for (j = n ; j >= i; j--)
{
L[j + 1] = L[j];
}
L[i] = x;
}
void Deletelist(Sqlist L, int i, int n)
{
int j;
cout << "输入您希望删除的第几个元素:";
cin >> i;
while (i<1 || i>n)
{
cout << "i值错误";
cout << "请重新输入您希望删除的第几个元素:";
cin >> i;
}
for (j = i; j <= n; j++)
{
L[j] = L[j + 1];
}
}
void ranklist(Sqlist L, int n)
{
int i, j,temp;
for (i = 1; i < n; i++)
{
for (j = i + 1; j <= n; j++)
{
if (L[i] > L[j])
{
temp = L[i];
L[i] = L[j];
L[j] = temp;
}
}
}
}
void inverselist(Sqlist L, int n)
{
int i,temp;
for (i = 1; i <= n / 2; i++)
{
temp = L[i];
L[i] = L[n - i + 1];
L[n - i + 1] = temp;
}
}