数据结构——顺序表的基本操作

本人是初学数据结构的纯小白数据结构——顺序表的基本操作,以下贴出单链表的部分操作,若有不足之处,请多多指教数据结构——顺序表的基本操作

#include<iostream>
#define MAXSIZE 100
using namespace std;
typedef struct 
{
int *elem;//储存空间基地址
int length;//当前长度
}Sqlist;
void InitList(Sqlist &L)//初始化顺序表
{
L.elem = new int[MAXSIZE];//分配空间
L.length = 0;//表长为0;
}
void CreateList(Sqlist &L,int n)//输入元素创建顺序表
{
int i;
for (i = 1; i <=n; i++)
{
cin >> L.elem[i];
L.length++;
}
}
int GetElem(Sqlist L, int i)//获取第i个元素的值
{
if (i<1 || i>L.length)//若i值不在在1~length之间则退出
return 0;
int e = L.elem[i];
return e;
}
void LocateElem(Sqlist L, int e)
{
int i;
for (i = 1; i <= L.length; i++)
{
if (e == L.elem[i])
{
cout << "序号为:" << i <<endl;
break;
}
}
if(i==L.length) cout << "表中无此元素" << endl;
}
void ListInsert(Sqlist &L, int i, int e)//在第i个位置插入元素e
{
if ((i<1) || (i>L.length) == 1)//i位置不合法
cout << "i位置不合法" << endl;
if (L.length == MAXSIZE)//储存空间已满
cout << "储存空间已满" << endl;
for (int j = L.length; j >= i; j--)//将i位置及后的元素后移
L.elem[j + 1] = L.elem[j];
L.elem[i] = e;//元素e插入顺序表中
L.length++;//表长加1
}


void ListDelete(Sqlist &L, int i)//删除第i个位置元素
{
if ((i<1) || (i>L.length) == 1)//i位置不合法
cout << "i位置不合法" << endl;
else
{
int j;
for (j = i; j <= L.length; j++)//将i位置及之后的元素前移
L.elem[j] = L.elem[j+1];
L.length--;
}
}
void DisplayList(Sqlist L)
{
int i;
for (i =1; i <= L.length; i++)
cout << L.elem[i] << " ";
}
int main()
{
Sqlist L;
InitList(L);


int n;
cout << "请输入元素个数:";
cin >> n;
cout << "请输入元素:";
CreateList(L, n);
cout << "顺序表:";
DisplayList(L);
cout << endl;
int i;
cout << "请输入元素位置:";
cin >> i;
cout<<"该位置的元素是:"<<GetElem(L, i)<<endl;

int e;
cout << "请输入元素值:";
cin >> e;
LocateElem(L, e);


int a,b;
cout << "请输入需要插入元素的位置和元素:";
cin >> a>>b;
ListInsert(L, a, b);
cout << "插入元素后的顺序表:";
DisplayList(L);
cout << endl;


int m;
cout << "请输入需要删除元素的位置:";
cin >> m;
ListDelete(L, m);
cout << "删除元素后的顺序表:";
DisplayList(L);
cout << endl;


system("pause");
return 0;

}

数据结构——顺序表的基本操作