#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int data;
int cur;
}list;
typedef struct
{
list a[100];
int av;
}link;
void init(link *l)
{
int i;
for(i=0;i<100;i++)
l->a[i].cur=i+1;
l->a[99].cur=0;
l->av=1;
}
int assign(link l)
{
int i;
i=l.av;
l.av=l.a[i].cur;
return i;
}
void freenode(link l,int pos)
{
l.a[pos].cur=l.av;
l.av=pos;
}
void insert(link *l,int i,int e)
{
int j,k,x;
k=l->av;
l->av=l->a[k].cur;
l->a[k].data=e;
j=l->a[0].cur;
for(x=1;x<i-1;x++)
j=l->a[j].cur;
l->a[k].cur=l->a[j].cur;
l->a[j].cur=k;
}
void delete(link *l,int i,int *e)
{
int j,k,x;
j=l->a[0].cur;
for(x=1;x<i-1;x++)
j=l->a[j].cur;
k=l->a[j].cur;
l->a[j].cur=l->a[k].cur;
l->a[k].cur=l->av;
*e=l->a[k].data;
l->av=k;
}
void print(link l,int n)
{
int j,k;
k=l.a[0].cur;
for(j=1;j<=n;j++)
{
printf("%d ",l.a[k].data);
k=l.a[k].cur;
}
printf("/n");
}
void main()
{
link l;
int len,i;
int pos;
int e;
int b[]={1,2,3,4,5,6,7,8,9};
len=sizeof(b)/sizeof(b[0]);
init(&l);
for(i=1;i<=len;i++)
insert(&l,i,b[i-1]);
printf("静态链表中的元素为:/n");
print(l,len);
printf("输入要插入的元素及位置/n");
scanf("%d%d",&e,&pos);
insert(&l,pos,e);
printf("插入元素后静态链表中的元素为/n");
print(l,len+1);
printf("输入要删除的位置/n");
scanf("%d",&pos);
delete(&l,pos,&e);
printf("删除的元素是");
printf("%d/n",e);
printf("删除后链表元素为");
print(l,len);
}
静态链表的应用
最新推荐文章于 2025-04-11 15:21:20 发布