静态链表基本操作的头文件:SLinkList.h
#include<iostream>
using namespace std;
#define MAXSIZE 1000
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int ElemType;
typedef int Status;
typedef struct
{
ElemType data;
int next;
}component,SLinkList[MAXSIZE];
using namespace std;
#define MAXSIZE 1000
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int ElemType;
typedef int Status;
typedef struct
{
ElemType data;
int next;
}component,SLinkList[MAXSIZE];
//基本算法1:将一维数组space中各分量链成一个备用链表,space[0].cur为头指针
void InitSpace_SL(SLinkList& space)
{
for (int i = 0; i < MAXSIZE - 1; ++i)
space[i].next = i + 1;
space[MAXSIZE - 1].next = 0;
}
void InitSpace_SL(SLinkList& space)
{
for (int i = 0; i < MAXSIZE - 1; ++i)
space[i].next = i + 1;
space[MAXSIZE - 1].next = 0;
}
//基本算法2:若备用空间链表非空,则返回分配的结点下标,否则返回0
int Malloc_SL(SLinkList& space)
{
int i = space[0].next;
if (space[0].next)
{
space[0].next = space[i].next;
return i;
}
else
return 0;
}
int Malloc_SL(SLinkList& space)
{
int i = space[0].next;
if (space[0].next)
{
space[0].next = space[i].next;
return i;
}
else
return 0;
}
//基本算法3:将下标为k的空闲结点回收到备用链表
void Free_SL(SLinkList& space, int k)
{
space[k].next = space[0].next;
space[0].next = k;
}
void Free_SL(SLinkList& space, int k)
{
space[k].next = space[0].next;
space[0].next = k;
}
//构造一个空的静态链表L
Status InitList_SL(SLinkList& S)
{
InitSpace_SL(S);
int L = Malloc_SL(S);
S[L].next = 0;
return OK;
}
Status InitList_SL(SLinkList& S)
{
InitSpace_SL(S);
int L = Malloc_SL(S);
S[L].next = 0;
return OK;
}