【顺序表实现方式】静态分配与动态分配

1、顺序表的实现——静态分配

静态分配定义模板代码

#define MaxSize 10          //定义最大长度
typedef struct
{
	ElemType data[MaxSize];	//用静态的“数组”存放数据元素,ElemType:Element Type(填写元素类型)
	int length;			    //顺序表的当前长度
}SqList;				    //顺序表的类型定义,SqList:Sequence List(顺序表)

静态分配完整代码

/*顺序表的静态分配*/
#include <stdio.h>
#define MaxSize 10		//定义最大长度
typedef struct
{
	int data[MaxSize];	//用静态的“数组”存放数据元素
	int length;			//顺序表的当前长度
}SqList;				//顺序表的类型定义,SqList:Sequence List(顺序表)

//初始化一个顺序表
void InitList(SqList &L)
{
	for(int i=0; i<MaxSize;i++)
		L.data[i]=0;	//将所有数据元素设置为默认初始值0
	L.length=0;			//顺序表初始长度为0
}

int main()
{
	SqList L;			//声明一个顺序表
	InitList(L);		//初始化顺序表
	for(int i=0;i<MaxSize;i++)
		printf("data[%d]=%d\n",i,L.data[i]); 
    return 0;
}

2、顺序表的实现——动态分配

动态分配定义模板代码


                
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
静态链表和动态链表的区别在于它们的存储方式和内存分配方式静态链表是一种用数组描述的链表,它需要预先申请一整块足够内存的空间,并且在创建时就确定了能存储的元素个数,无法再更改。而动态链表则可以在使用过程中动态申请内存,根据需要随时开辟存储空间,不需要时再随时释放。\[1\] 静态链表的实现方式是通过数组来存储节点,每个节点除了存放数据本身的数据域外,还需要有一个指针域,用来存放下一个节点元素的地址,以便通过这些指针把各节点连接起来。而动态链表的存储单元由动态存储分配获得,每个存储单元的地址不一定是连续的。\[2\] 静态链表包括两个链表,一个是数据链表,一个是空闲链表。数据链表的第一个节点作为表头,其cur值指向第一个有数据的节点;空闲链表的第一个节点作为表头,其cur值指向下一个空闲的节点。在插入和删除操作时,静态链表只需要修改游标,不需要移动元素,从而改进了在顺序存储结构中插入和删除元素需要移动大量元素的缺点。但静态链表没有解决连续存储分配带来的表长难以确定的问题。\[1\] 总结来说,静态链表是通过数组实现的链表,需要预先申请一整块内存空间,无法动态改变存储容量;而动态链表可以根据需要动态申请内存,灵活地使用存储空间。 #### 引用[.reference_title] - *1* [静态链表/动态链表C语言实现](https://blog.csdn.net/weixin_37515325/article/details/115028017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [静态链表和动态链表的区别](https://blog.csdn.net/zhengqijun_/article/details/78192888)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值