数据结构中顺序表的简单实现和一些简单操作的测试:
//顺序表简单实现
#include <iostream>
#define ElemType char
#define Maxsize 50
using namespace std;
//结构定义
typedef struct
{
ElemType data[Maxsize];
int length;
}SqList;
//初始化
void InitList(SqList &L)
{
L.length=0;
}
//求指定位置的元素
int GetElem(SqList L,int i,ElemType &e)
{
if(i<1||i>L.length)
return 0;
e=L.data[i-1];
return 1;
}
//按照元素值查找
int LocateElem(SqList L,ElemType e)
{
int i=0;
while(i<L.length&&L.data[i]!=e) i++;
if(i>=L.length) return 0;
else return i+1;
}
//指定位置插入元素
int ListInsert(SqList &L,int i,ElemType e)
{
if(i<1||i>L.length+1)
return 0;
i--;
for(int j=L.length;j>i;j--)
{
L.data[j]=L.data[j-1];
}
L.data[i]=e;
L.length++;
return 1;
}
//删除指定位置元素
int ListDelete(SqList &L,int i,ElemType &e)
{
int j;
if(i<1||i>L.length)
return 0;
e=L.data[i-1];
for(j=i-1;j<L.length-1;j++)
{
L.data[j]=L.data[j+1];
}
L.length--;
return 1;
}
int main()
{
SqList l; ElemType e;int i;
ElemType a[5]={'a','b','c','d','e'};
InitList(l);
for(i=0;i<5;i++) //插入元素
ListInsert(l,i+1,a[i]);
cout<<"顺序表中的元素为:";
for(i=0;i<l.length;i++)
cout<<l.data[i]<<" ";
cout<<endl;
GetElem(l,3,e); //取指定位置元素
cout<<"在顺序表位置3的元素是:"<<e<<endl;
cout<<"b在顺序表中的位置为: "<<LocateElem(l,'b')<<endl;//定位测试
ListDelete(l,4,e); //删除测试
cout<<"删除的元素为: "<<e<<endl;
cout<<"删除完元素之后的顺序表为:";
for(i=0;i<l.length;i++)
cout<<l.data[i]<<" ";
return 0;
}
代码运行的结果为: