数据结构算法笔记 lesson5 静态链表

静态链表

   用数组描述的链表叫做静态链表 

线性表的静态链表存储结构

#define MAXSIZE 1000
typedef struct 
{
ElemType data;
int  cur ;
}Component , StaticLinkList[MAXSIZE];


对静态链表进行初始化

Status InitList(StaticLinkList space)
{
int  i ;
  for(i = 0 ;i<MAXSIZE-1;i++)
              space[i].cur=i+1;
space[MAXSIZE-1].cur= 0 ;
       return 1;
}


 对数组的第一个和最后一个元素做特殊处理,他们的data不存放数据

 通常把未使用的数组元素称为备用链表。

 数组的第一个元素,即下标为0的那个元素的cur就存放备用链表 的第一个结点的下标

 数组的最后一个元素,即下标为MAXSIZE-1的cur则存放在第一个有数值的元素的下标,相当于单链表中的头结点作用。

静态链表的插入

获得空闲分量的下标

int Malloc_SLL(StaticLinkList space)
{
    int i= space[0].cur;
   if(space[0].cur)
      space[0].cur=spaec[i].cur;
    return i;
}
Starus ListInsert(StaticLinkList L , int i ,ElemType e)
{
     int j ,k , l;
     k = MAX_SIZE -1;
     if (i<1 || i> ListLength(L)+1)
    {
           return 0;
    }
     j = Malloc_SLL(L);
     if (j)
     {
           L(j).data=e;
         for (l=1; l <i-1 ; l++)
           {
                k=L[k].cur;
           }
           L[j].cur = L(k).cur;
           L[k].cur=j;
           return 1;
     }
   return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值