线性表可以用顺序表实现,也可用链表实现。
顺序表的特点:1、逻辑上相邻的数据元素,其物理次序也是相邻的。
2、线性表的顺序存储结构是一种随机存取的存储结构
------------------------------顺序表的存储结构--------------------------------
#define MAXSIZE 100
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef int Status ;
typedef struct
{
int *elem;
int length;
}SqList ;
#elem可以任何是自定义的数据类型。
--------------------------------顺序表的基本操作--------------------------------
1、初始化
C++ 实现:
Status InitList (SqList &L)
{
L.elem = new int [MAXSIZE];
if(!L.elem) exit (OVERFLOW );
L.Length=0;
return OK ;
}
2、取值
Status GetElem (SqList L,int i,Elem )
{
if(i<1||i>L.Length ) return ERROR;
e=L.elem [i];
return OK;
}
3、查找
int Locate(SqList L,int elem)
{
for(int i=0; i<L.length; i++)
{
if(L.elem[i]==elem)
{
return i+1;
}
}
}
4、插入
Status ListInsert(SqList &L,int i,Elem e)
{
if(i>=1&&i<=L.length+1; i++)
{
for(int j=L.length-1; j>=i-1; j--)
{
L.elem[j+1]=L.elem[j];
}
L.elem[i-1]=e;
++L.length;
return OK;
}
else
return ERROR;
}
5、删除
Status Listdelete(SqList &L ,int i)
{
if(i>=1&&i<=L.length)
{
for(int j=i;j<=L.length-1;j++)
{
L.elem[i-1]=L.elem[i];
}
--L.length;
return OK;
}
else
{
return ERROR;
}
}