#include<iostream.h>
const int max=100;
typedef struct SListNode
{
int data;
int count;
}StaticList[max];
const int max=100;
typedef struct SListNode
{
int data;
int count;
}StaticList[max];
void InitSList(StaticList & space )
{
for(int i=0;i<max-1;i++)
space[i].count=i+1;
space[max-1].count= 0;
}
{
for(int i=0;i<max-1;i++)
space[i].count=i+1;
space[max-1].count= 0;
}
void Free_SLNode(StaticList & space,int t)
{
space[t].count= space[0].count;
space[0].count= t;
}
{
space[t].count= space[0].count;
space[0].count= t;
}
int Build(StaticList & space )
{
int i = space[0].count;
if(i)
{
space[0].count= space[i].count;
}
return i;
}
bool insert(StaticList & space,int h,int m,int t)
{
if(t<=0)
{
return false;
}
int i = h;
int n = 0;
while(i)
{
if(n == t-1 && space[i].count)
{
space[m].count= space[i].count;
space[i].count= m;
return true;
}
i = space[i].count;
n++;
}
return false;
}
bool dele(StaticList & space,int h, int n)
{
if(n<0) return false;
int i=h;
int m =0;
while(i)
{
if(m == n-1)
{ int t = space[i].count;
space[i].count = space[t].count;
Free_SLNode(space,t);
return true;
}
i = space[i].count;
m++;
}
return false;
}
bool add(StaticList & space,int h,int m)
{
int i = h;
while(space[i].count)
{
i = space[i].count;
}
space[i].count=m;
space[m].count=0;
return true;
}
int main()
{
StaticList List;
InitSList(List);
int h = Build(List);
List[h].count = 0;
int t = Build(List);
List[t].data = 1;
add(List,h,t);
t = Build(List);
List[t].data = 3;
add(List,h,t);
t = Build(List);
List[t].data = 7;
add(List,h,t);
cout<<"输出所有数据:"<<endl;
int i = List[h].count;
while (i)
{
cout<<List[i].data<<",";
i = List[i].count;
}
cout<<endl;
cout<<"在第1个元素之前插入一个值为6的新节点:"<<endl;
t = Build(List);
List[t].data = 6;
insert(List,h,t,1);
i = List[h].count;
while (i)
{
cout<<List[i].data<<",";
i = List[i].count;
}
cout<<endl;
{
int i = space[0].count;
if(i)
{
space[0].count= space[i].count;
}
return i;
}
bool insert(StaticList & space,int h,int m,int t)
{
if(t<=0)
{
return false;
}
int i = h;
int n = 0;
while(i)
{
if(n == t-1 && space[i].count)
{
space[m].count= space[i].count;
space[i].count= m;
return true;
}
i = space[i].count;
n++;
}
return false;
}
bool dele(StaticList & space,int h, int n)
{
if(n<0) return false;
int i=h;
int m =0;
while(i)
{
if(m == n-1)
{ int t = space[i].count;
space[i].count = space[t].count;
Free_SLNode(space,t);
return true;
}
i = space[i].count;
m++;
}
return false;
}
bool add(StaticList & space,int h,int m)
{
int i = h;
while(space[i].count)
{
i = space[i].count;
}
space[i].count=m;
space[m].count=0;
return true;
}
int main()
{
StaticList List;
InitSList(List);
int h = Build(List);
List[h].count = 0;
int t = Build(List);
List[t].data = 1;
add(List,h,t);
t = Build(List);
List[t].data = 3;
add(List,h,t);
t = Build(List);
List[t].data = 7;
add(List,h,t);
cout<<"输出所有数据:"<<endl;
int i = List[h].count;
while (i)
{
cout<<List[i].data<<",";
i = List[i].count;
}
cout<<endl;
cout<<"在第1个元素之前插入一个值为6的新节点:"<<endl;
t = Build(List);
List[t].data = 6;
insert(List,h,t,1);
i = List[h].count;
while (i)
{
cout<<List[i].data<<",";
i = List[i].count;
}
cout<<endl;
cout<<"删除第2节点:"<<endl;
dele(List,h,2);
i = List[h].count;
while (i)
{
cout<<List[i].data<<",";
i = List[i].count;
}
cout<<endl;
return 0;
}
dele(List,h,2);
i = List[h].count;
while (i)
{
cout<<List[i].data<<",";
i = List[i].count;
}
cout<<endl;
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6046eacaec50622e5ca97dab3d15d091.png)