静态链表的实现(建表,定位,删除,插入)
#include<iostream>
using namespace std;
const int maxsize=1000;
int N;
typedef struct List
{
int val;
int cur;
}List,Linklist[maxsize];
int LocateElem(Linklist S,int e);
void InitSpace(Linklist &S);
void InsertElem(Linklist &S,int loc,int e);
void destroyElem(Linklist &S,int loc);
void printElem(Linklist &S);
int main()
{
Linklist S;
InitSpace(S);
InsertElem(S,0,0);
printElem(S);
destroyElem(S,1);
printElem(S);
return 0;
}
void InitSpace(Linklist &S)
{
cin>>N;
S[0].cur=1;
int i=S[0].cur;
for(;i<=N;i++){
S[i].cur=i+1;
S[i].val=i;
}
S[N].cur=0;
}
int LocateElem(Linklist S,int e)
{
int i=S[0].cur;
while(i&&S[i].val!=e) i=S[i].cur;
return i;
}
void InsertElem(Linklist &S,int loc,int e)
{
int i=S[0].cur;
for(int j=1;j<loc;j++) i=S[i].cur;
if(!loc) i--;
int flag=S[i].cur;
S[i].cur=++N;
S[N].cur=flag;
S[N].val=e;
}
void destroyElem(Linklist &S,int loc)
{
int i=0;
for(int j=1;j<loc;j++) i=S[i].cur;
S[i].cur=S[S[i].cur].cur;
}
void printElem(Linklist &S)
{
int i=S[0].cur;
while(i){
cout<<S[i].val<<' ';
i=S[i].cur;
}
cout<<endl;
}