[c语言]静态数组

本文介绍了C语言中静态数组的实现方法,相比链表实现更具挑战性。通过在一个数组中划分数值空间和备用空间,利用备用空间进行动态malloc来存储数值。详细教程参见链接:http://data.biancheng.net/view/163.html
摘要由CSDN通过智能技术生成

这个东西感觉比链表要难实现多了…
大概实现了下
大概思路就是在一个数组里将空间分配为数值空间和备用空间,从备用空间中malloc空间来放数值

http://data.biancheng.net/view/163.html
这里的讲解更详细

/*静态链表是针对于没有指针的语言来描述单链表的*/
/*采用 数值空间 和 备用空间 来实现*/
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#define MaxSize 22 //最大空间[记得两个空间放备用空间和数值空间的头] 
typedef int Type;
struct _StaticList //单个静态链表空间的结构体 
{
   
	Type data;
	int next;
} list[MaxSize];
int tail = 1;//指向最后一个节点的下标
//list[0]为备用链表表头,备用链表的最后一个空间的next为 -1,list[1]为数据链表表头,数据空间的最后一个空间的next为 0
int ListInit()//list初始化
{
   
	for(int i = 2; i<MaxSize-1; i++)
	{
   
		list[i].next = i+1;/*每个空间都指向下一个空间*/
	}
	list[MaxSize-1].next = -1;/*列表制空:最后一个空间的下一个指向 -1*/
	list[0].next = 2;//指向第一个备用空间的下标
	list[1].next = 0;//指向 指向第一个数据空间的下标
}
int ListMalloc()//申请空间
{
   
	int key = list[0].next;/*获取空闲的空间下标*/
	if(list[0].next != -1)
	{
   
		list[0].next = list[key].next;/*如果还有空闲的就让list[0]指向那个下一个空闲的下标*/
	}
	return key;/*返回空闲空间的下标*/
}
int ListAdd(Type data)/*顺序插入*/
{
   
	int key = ListMalloc();/*申请一个空间*/
	if(key == -1)//只要下标不是-1就代表有空间
	{
   
		return 0;
	}
	list[key].data = data;
	list[key
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值