顺序表的建立及基本操作
实验内容 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:初始化线性表 1:输出线性表 2:找出最大值并输出 3:在线性表的第i个元素前插入一个正整数x 4:删除线性表中第i个元素 5:对线性表按升序排列 6:将线性表中的元素就地逆序 7:退出操作 "; 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 << " "; } 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<<" "; } 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; } }