一、线性表顺序实现
1.1 顺序存储结构类型定义
#define Status bool
#define MAXSIZE 100
#define ElemType char
typedef struct
{
ElemType *elem;
int length;
}SqList;
1.2基本操作的实现
1.2.1初始化
Status InitSqlist(SqList& L)
{
L.elem = new Elemtype[MAXSIZE];
if(!L.elem)
{
cout<<"空间分配失败"<<endl;
return false;
}
L.length = 0;
return true;
}
1.2.2 取值操作
Status GetElem(SqList L, int i, ElemType& e)
{
if (i < 1 || i >L.length)
return false;
e = L.elem[i - 1];
return true;
}
1.2.3查找
int LocateElem(SqList L, ElemType e)
{
for(int i = 0; i < L.length; i++)
{
if(L.elem[i] == e)
return i + 1;
}
return 0;
}
1.2.4插入
Status ListInsert(SqList& L, int i, ElemType e)
{
if(i < 1||(i > L.length + 1))
{
cout<<"数目格式不合理"<<endl;
return false;
}
if(L.length == MAXSIZE)
{
cout<<"数目大小不合理"<<endl;
return false;
}
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 true;
}
1.2.5 删除
Status ListDelete(SqList& L, int i)
{
if(i < 1||(i > L.length + 1))
{
cout<<"数目格式不合理"<<endl;
return false;
}
for(int j = i; j <= L.length - 1;j++)
{
L.elem[j - 1] = L.elem[j];
}
L.length--;
return true;
}
二、链表的实现
2.1链式存储结构定义
typedef struct LNode
{
Elemtype data;
struct LNode *next;
};