用c语言编写顺序表

什么是顺序表

  • 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。

  • 顺序表:可动态增长的数组,要求数据是连续存储的

  • 与链表的区别:同样是存储想同类型数据的线性表,但是链表两个节点之间使用指针进行链接,相比来说占用更大的空间,但是对于增加和删除节点时相比比顺序表更快。

静态顺序表和动态顺序表

  • 静态顺序表:静态顺序表通过一个提前分配好了的数组进行存储数据,优点是不能很好评估分配的大小

  • 动态顺序表:动态顺序表是通过动态分配数组的大小进行存储数据,优点是可以动态分配大小,缺点是在扩容过程中可能比较复杂

动态顺序表

顺序表的数据结构定义

typedef struct OrderLists {
   
	int *datas;
	int maxsize;
	int size;

}OrderList;

size代表当前顺序表已经存储的数据量,maxsize表示当前顺序表所能存储的最大数据,当size=maxsize时会进行扩容操作,datas是用来存储数据的动态数组,数组大小动态分配。

顺序表的初始化


// 初始化顺序表
void initOrderList(OrderList* list,int maxsize) {
   
	list->datas = (int*)malloc(maxsize * sizeof(int));
	list->maxsize = maxsize;
	list->size = 0;
}

在初始化时定义一个预先分配的最大值,通过malloc函数进行分配内存,maxsize相应进行赋值,size分配为0

顺序表扩容

/// <summary>
/// 顺序表扩容,扩容为原来内容的两倍
/// </summary>
/// <param name="list"></param>
void expansion(OrderList *list) {
   
    // 申请两倍当前maxsize的内存
	int* new_data = malloc(2 * list->maxsize * sizeof(int));
	
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值