#include<iostream>
using namespace std;
typedef struct {
int* a;
int length;
}Sqlist;
// 创建线性表
void InitList(Sqlist& L) {
L.a = new int[20];
if (!L.a)
exit(0);
L.length = 0;
cout << "线性表已经创立。" << endl;
}
// 销毁线性表
void DestroyList(Sqlist& L) {
if (L.a)
delete L.a;
cout << "线性表已经被销毁了。" << endl;
}
// 清空线性表
void ClearList(Sqlist& L) {
L.length = 0;
cout << "线性表已经被清空了,可以用来做其他的事情了。" << endl;
}
// 求线性表的长度
int GetList(Sqlist& L) {
return L.length;
}
// 判断线性表是否为空
void IsEmpty(Sqlist& L) {
if (L.length == 0)
cout << "线性表是空表。" << endl;
else
cout << "线性表不是空表。" << endl;
}
// 取值方法
int GetValue(Sqlist L, int i, int& e) {
if (i<1 || i>L.length) {
cout << "i的取值范围不合法。" << endl;
return 0;
}
else {
e = L.a[i];
}
return e;
}
// 按值查找
int ChaZhao(Sqlist L, int e) {
int i = 0;
for (i; i < L.length; i++) {
if (L.a[i] == e) {
return i + 1;
break;
}
}
return 0;
}
// 顺序表的插入
void ChaRu(Sqlist& L, int e, int i) {
if (i<0 || i>L.length + 1) {
cout << "位置" << i << "不合法。" << endl;
exit(0);
}
if (L.length == 20) {
cout << "线性表已经满了。" << endl;
exit(0);
}
int j = L.length;
for (j;j >= i; j--) {
L.a[j] = L.a[j- 1];
}
L.a[i - 1] = e; L.length++;
}
// 顺序表的删除
void ShanChu(Sqlist &L, int i) {
if (i<0 || i>L.length) {
cout << "位置" << i << "不合法。" << endl;
}
int j = L.length;
for (i; i<=j-1; i++) {
L.a[i-1] = L.a[i ];
}
L.length--;
}
int main() {
Sqlist L;
InitList(L);
cout << GetList(L) << endl;
IsEmpty(L);
L.a[0] = 0;
L.a[1] = 1;
L.a[2] = 2;
L.a[3] = 3;
L.a[4] = 4;
L.a[5] = 5;
L.a[6] = 6;
L.a[7] = 7;
L.length = 8;
cout << ChaZhao(L, 7) << endl;
ChaRu(L, 8, 9);
cout << GetList(L) << endl;
cout << L.a[8] << endl;
ShanChu(L, 2);
cout << GetList(L) << endl;
cout << L.a[1] << endl;
return 0;
}
线性表的顺序表现形式
原文:https://www.cnblogs.com/wangmoumou/p/13841888.html