严蔚敏数据结构C语言版 P34 2.17(静态链表的删除操作的思想实践(删除静态链表第i个结点))——中职

严蔚敏数据结构C语言版 P34 2.17
静态链表的删除操作的思想实践(删除静态链表第i个结点)

/*
严蔚敏数据结构C语言版 P34 2.17
静态链表的删除操作的思想实践(删除静态链表第i个结点)
*/

//头文件
#include<stdio.h>
#include<stdlib.h>

//宏区
#define SIZEMAX 10												//定义最大静态链表结点数

//结构
typedef struct													//静态链表的结构
{
   
	int data;													//数据域
	int cur;													//游标
}Sqlink_list, Plink_list[SIZEMAX];			

//函数声明
void Link_list_initialize(Plink_list);							//初始化静态链表(将所有结点挂在备用头结点上)
int Link_list_allot(Plink_list);								//分配空闲结点
void Link_list_build(Plink_list);								//建立静态链表	
void Link_list_printf(Plink_list);								//输出静态链表
void Link_list_delect(Plink_list);								//静态链表的删除

//函数区			
void Link_list_initialize(Plink_list link_list)					//初始化静态链表(将所有结点挂在备用头结点上)
{
   
	int i;

	for (i = 0;i < SIZEMAX;i++)									//SIZEMAX - 1个元素依次挂在备用头结点上
	{
   
		link_list[i].cur = i + 1;								//指向下一个结点
	}			

	link_list[SIZEMAX - 1].cur = NULL;							//将尾结点挂起
}

int Link_list_allot(Plink_list link_list)						//分配空闲结点
{
   
	int i = 1;
	
	if (i)														//如果有空闲结点
	{
   
		i = link_list[0].cur;									//分配一个空闲结点给i
		link_list[0].cur = link_list[i].cur;					//将备用头结点指向被分配的空闲结点的下一个结点
	}

	if(NULL == i)												//如果没有可分配的备用结点
	{
   
		printf("没有可分配的空闲结点了,请重新检查程序!\n");	//提醒用户
		exit(0);												//正常终止程序
	}

	return i;													//返回当前被分配的空闲结点
}

void Link_list_build(Plink_list link_list)						//建立静态链表	
{
   
	int len, i, k, c, val;

	printf("输入要建立静态链表结点的个数(0 - 8):");			//显示提醒用户输入个数
	scanf_s("%d", 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值