AMiner必读论文推荐#ALT近年最佳论文#

java的数据结构与算法的day08

  返回  

静态链表

2021/8/20 17:26:12 浏览:

静态链表

在这里插入图片描述
线性表的静态链表存储结构

#define MAXSIIZE 1000
typedef struct
{
     ElemType data;  //数据
     int cur;  //游标
}Component,StaticLinkList[MAXSIZE];

对静态链表进行初始化相当于初始化数组

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

静态链表的插入操作
获得空闲分量的下标

int Malloc_SLL(StaticLinkList space)
{
     int i=space[0].cur;
     if(space[0].cur)
     {
           space[0].cur=space[i].cur; //把它的下一个分量用来作为备用
     }
     return i;
}            
//在静态链表L中第i个元素之前插入新的元素 
Status ListInsert(StaticLinkList L,int i,Elemtype e)
{
	int j,k,l;
	k=MAX_SIZE-1;  //数组的最后一个元素
	if(i<1||i>ListLength(L)+1)
	{
		return ERROR;
	} 
	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 OK;
	}
	return ERROR;
}

静态链表的删除操作
在这里插入图片描述

/*删除在L中的第i个数据元素*/
Status ListDelete(StaticLinkList L,int i)
{
	int j,k;
	if(i<1||i>ListLength(L))
	{
		return ERROR;
	}
	k=MAX_SIZE-1;
	for(j=1;j<=i-1;j++)
	{
		k=L[k].cur;
	}
	j=L[k].cur;
	L[k].cur=L[j].cur;
	Free_SLL(L,j);
	return OK;
} 
/*将下标为K的空闲结点回收到备用链表*/
void Free_SLL(StaticLinkList space,int k)
{
	space[k].cur=space[0].cur;
	space[0].cur=k;
} 
/*返回L中数据元素个数*/
int ListLength(StaticLinkList L)
{
	int j=0;
	int i=L[MAXSIZE-1].cur;
	while(i)
	{
		i=L[i].cur;
		j++;
	}
	return j;
} 

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号