#include<iostream>
using namespace std;
#define MaxSize 10
typedef struct SqList {
int data[MaxSize];
int length;
}SqList;
// 初始化一个顺序表
void InitList(SqList &L)
{
for (int i=0; i<MaxSize; i++)
L.data[i] = 0;
L.length = 0;
}
// 在顺序表的第i个位置插入元素e
bool ListInsert(SqList &L, int i, int e)
{
if (i<1 || i>L.length+1) // 判断i的范围是否有效
return false;
if (L.length >= MaxSize) // 当前存储空间已满,不能插入
return false;
for (int j=L.length; j>=i; j--) // 将第i个元素及以后的元素后移
L.data[j] = L.data[j-1];
L.data[i-1] = e; // 在位置i放入元素e
L.length ++; // 长度加·1
return true;
}
// 在顺序表的第i个位置插入元素e
bool ListDelete(SqList &L, int i, int &e)
{
if (i<1 || i>L.length) // 判断i的范围是否有效
return false;
e = L.data[i-1]; // 将被删除的元素赋值给e
for (int j=i; j<L.length; j++) // 将第i个位置后的元素前移
L.data[j-1] = L.data[j];
L.length --; // 长度加·1
return true;
}
// 按位置查找元素, 返回元素值
int GetElem(SqList L, int i)
{
if (i<1 || i>L.length) // 判断i的范围是否有效
return 0;
return L.data[i-1];
}
// 按值查找元素,返回元素的位置
int LocElem(SqList L, int e)
{
for (int i=0; i<L.length; i++)
if (L.data[i] == e)
return i+1;
return 0;
}
int main()
{
SqList L;
InitList(L); // 初始化
ListInsert(L,1,1); // 插入元素
ListInsert(L,2,2); // 插入元素
ListInsert(L,3,3); // 插入元素
int e = -1;
ListDelete(L,2,e); // 删除元素
cout << "delete element: " << e << endl;
int a = GetElem(L, i); // 按位置查找元素
int b = LocElem(L, e); // 按值查找元素
for (int i=0; i<L.length; i++)
cout << "data[" << i << "]=" << L.data[i] << endl;
return 0;
}
原文:https://www.cnblogs.com/wangshx666/p/14806839.html