静态链表的应用

来源:互联网 发布:艹女人是什么感受 知乎 编辑:程序博客网 时间:2024/06/06 00:43

#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);
}

原创粉丝点击