【数据结构-C】顺序表知识点梳理

1.线性表

2.顺序表

  概念

  结构

问题:

1.中间/头部的插入删除,时间复杂度为O(N)

2.增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。

3.增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。

思考:

如何解决以上的问题?下面我们给出了链表的结构看看。


线性表的顺序存储

         顺序存储的线性表的特点:

  • 线性表的逻辑顺序与物理顺序一致;
  • 数据元素之间的关系是以元素在计算机内“物理位置相邻”来体现。

顺序表的线性存储示意图:

C语言定义线性表的顺序存储结构:

typedef int DataType;
#define MAX_SIZE 100

struct SeqList{
	DataType _array[MAX_SIZE];//用来存储顺序表中的元素(最多的个数)
	int _size;  //顺序表中有效元素的个数
};

//动态顺序表:元素个数不受限【主要的*****】
typedef int DataType;
typedef struct SeqList{
	DataType* _array;
	int _capacity;//顺序表总大小
	int _size;//顺序表中有效元素的个数
}SeqList, *PSeq;

 DataType是数据元素类型,可以根据需要定义,可以使用SeqList定义数据表类型变量,使用*PSeq定义数据表指针变量;

顺序表的基本操作

(1)顺序表的初始化

顺序表的初始化就是把顺序表初始化为空的顺序表;只需把顺序表的长度size置为0即可;

void SeqListInit(PSeq ps, int capacity){
	ps->_array = (DataType*)malloc(sizeof(DataType)*capacity);
	if (NULL == ps->_array){  //必须判空
		assert(0);
		return;
	}
	ps->_capacity = capacity;
	ps->_size = 0;
}

(2)插入和删除操作(尾插、尾删、头插、头删)

void SeqListPushBack(PSeq ps, DataType data){
	
	//先把元素放进去

	assert(ps);
	//顺序
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值