赞
踩
顺序表是用一段物理地址连续的存储单元数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删改查
顺序表一般分为:
- typedef struct Seqlist
- {
- int* a;//指向动态开辟的数组
- size_t size;//有效数据的个数,指向最后一个元素的下一个位置
- size_t capicity;//容量空间的大小
- }Seqlist;
让我们看一下扩容的知识点吧~
扩容分为原地扩容和异地扩容,
其区别是看扩容的地址是否分配给了别人,若没有分配给别人,则就是原地扩容,否则就是异地扩容;
其检验方法是看返回值,原地扩容返回值是原地址,而异地扩容返回的是新地址
我们来举个实践例子吧~
由上图可看到,两个地址是一样的,所以都是原地扩容
接下来,重要的操作开始了(增删改查)!!!大家要认真看哦
定义一个顺序表
- typedef struct Seqlist
- {
- int *a;
- size_t size;
- size _t capicity;
- }Seqlist;
初始化一个顺序表
- typedef struct Seqlist
- {
- int* a=NULL;
- int size=0;
- int capicity=0;
- }Seqlist;
删除一个顺序表
- void SeqlistDestory(SL*psl)
- {
- if(psl->a!=NULL)
- {
- free(psl->a);
- int*a=NULL;
- size_t size=0;
- size_t capicity=0;
- }
- }Seqlist;
尾插顺序表
打印顺序表
头插法
尾删法
- void SeqlistPopBack (Seqlist *psl)
- {
- if(psl->size==0)//温柔的检查
- //暴力检查:assert(psl->size>0)
- return 0;
- psl->size--;
- }
头删法
在pos位置插入x值
在pos位置删除x值
思路:
代码实现:
找到值的元素
好啦,关于顺序表的操作我们就讲到这里啦~接下来让我们实践做几个题吧~
例题1:
首先我们在看题之前,我们要先了解什么是非递增,非严格递增,非递减,非严格递减
非递增就是递减
非严格递增:是有序的,后面的数大于或等于前面的数
思路:
代码实现:
例题二:
思路:
代码实现:
好啦~关于顺序表的知识点我们就讲到这里啦~后面会继续持更哦~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。