#include <stdlib.h>
#define MAXSIZE 100
typedef struct SNode
{
int data;
int cur;
}SNode;
SNode SLinkList[MAXSIZE];
void InitSL(SNode SL[],int size)
{
int i;
SNode* p;
p=SL;
for(i=0;i<size-1;i++)
{
p->data=0;
p->cur=i+1;
p++;
}
p->data=0;
p->cur=0;
}
void FreeSL(SNode SL[],int pos)
{
SNode* p;
p=SL;
SL[pos].cur=p->cur;
p->cur=pos;
}
int MallocSL(SNode SL[])
{
int i;
SNode* p;
p=SL;
i=p->cur;
if(i)
{
p->cur=SL[i].cur;
}
return i;
}
void InsertElem(SNode SL[],int *front,int value)
{
int pos;
pos=MallocSL(SL);
SL[pos].data=value;
SL[pos].cur=*front;
*front=pos;
}
void InsertAt(SNode SL[],int *front,int pos,int value)
{
int i;
int ps;
int node;
ps=*front;
i=1;
while(i<pos)
{
ps=SL[ps].cur;
i++;
}
node=MallocSL(SL);
SL[node].data=value;
SL[node].cur=SL[ps].cur;
SL[ps].cur=node;
}
int main()
{
int head;
int i,cx,cy;
InitSL(SLinkList,MAXSIZE);
cx=MallocSL(SLinkList);
head=cx;
for(i=0;i<59;i++)
{
cy=MallocSL(SLinkList);
SLinkList[cy].cur=head;
SLinkList[cy].data=i;
head=cy;
}
InsertElem(SLinkList,&head,34);
InsertAt(SLinkList,&head,5,89);
cy=head;
while(cy!=cx)
{
printf("%d/t",SLinkList[cy]);
cy=SLinkList[cy].cur;
}
getch();
return 0;
}