空顺序表的实现(基于c语言)
书中对于创建一个空线性表的定义如下:
struct SeqList{
int MAXNUM; // 顺序表中最大元素的个数(也就是最多多少个元素),(其实MAXNUM也可以定义在外面)
int n; // 存放线性表中元素的个数 (n<=MAXNUM)
DataType *element; //存放线性表的元素,element[0],element[1]...
//后续要给这个指针分配一个连续的区域
};
typedef struct SeqList * PSeqList;
//为使用方便,定义一个SeqList类型的指针类型
1 PSeqList createNullList_seq(int m){
2 PSeqList palist = (PSeqList)malloc(sizeof(struct SeqList));
3 if (palist != NULL){
4 palist->element = (DataType*)malloc(sizeof(DataType)*m);
5 if ( palist -> element){
6 palist -> MAXNUM = m;
7 palist -> n = 0;
8 return palist;
9 }
10 else free(palist);
11 }
12 printf("OUT OF SPACE!!");
13 return NULL;
14 }
对上述函数的一个理解:返回值是一个指向SeqList结构的一个指针;
传入的数据是指打算存放数据元素的个数;
然后第一步操作是定义一个指向SeqList结构的指针,并为其分配了一块区域(存放一个SeqList结构大小),通过 -> 访问里面的数据;
然后判断了是否能找到这样大的区域,如果没有则返回NULL,因此以NULL作为判断条件,如果为NULL,就可以直接结束了;
然后为element指针分配区域,要用到传入的参数,返回一个可以装m个DataType类型大小的连续区域;
然后是以palist->element为判断条件,(这里可以这样理解,就是palist->element表示的是一个地址,但是如果内存不够等其他情况,返回NULL,也相当于是false,如果为NULL的话,就是第一次可以分配成功,第二次未成功,那不要忘记把第一次分配的给free),如果成功的话,就对MAXNUM赋值m,也就是最多有m个元素,初始化n的值为0(n表示线性表中已经存放的元素的个数);
结束之后,返回得到的这样一个指针。
看完第一个方法,还可以理解,主要是c指针,结构,数组相关的,后续会更新。
空顺序表的实现(基于c语言)的更多相关文章
- 顺序表的基本操作【c语言】【创建、插入、删除、输出】
作为数据结构初学者,上课时对一些知识点掌握得不是很透彻,所以利用课余时间通过微博平台总结所学知识,加深对知识的见解,记录学习历程便于后需要时参考. #include<stdio.h> #i ...
- 顺序表及基本操作(C语言)
#include <stdio.h> #include <stdlib.h> //基本操作函数用到的状态码 #define TRUE 1; #define FALSE 0; # ...
- (续)顺序表之单循环链表(C语言实现)
单循环链表和单链表的唯一区别在于单循环链表的最后一个节点的指针域指向第一个节点, 使得整个链表形成一个环. C实现代码如下: #include<stdio.h> typedef struc ...
- C语言实现顺序表(顺序存储结构)
顺序表(顺序存储结构)及初始化过程详解 顺序表,全名顺序存储结构,是线性表的一种.通过<线性表>一节的学习我们知道,线性表用于存储逻辑关系为"一对一"的数据,顺序表自然 ...
- "《算法导论》之‘线性表’":基于动态分配的数组的顺序表
我们利用静态分配的数组来实现的顺序表的局限还是挺大的,主要在于它的容量是预先定好的,用户不能根据自己的需要来改变.如果为了后续用户能够自己调整顺序表的大小,动态地分配数组空间还是很有必要的.基于动态分 ...
- 【数据结构】之顺序表(Java语言描述)
之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中 ...
- 线性表——顺序表的实现与讲解(C++描述)
线性表 引言 新生安排体检,为了 便管理与统一数据,学校特地规定了排队的方式,即按照学号排队,谁在前谁在后,这都是规定好的,所以谁在谁不在,都是非常方便统计的,同学们就像被一条线(学号)联系起来了,这 ...
- 线性表是否为空,定位元素下标(基于c语言)
/*前面已经说过结构体中的n是代表已经放入线性表中元素的个数,所以判断线性表是否为空就是判断n的值是否为空*/ //书中代码如下 int isNullList_seq(PSeqList palist) ...
- 前面顺序表的补充(复杂度,未实现的算法,空间扩展)(基于c语言)
0.对于顺序表中的n个元素,如果在下标i的位置之前插入一个元素,则需要将后面n-i个元素向后移动一位:如果是删除下标为i处的元素,则是则需要将后面n-i-1个元素向前移动一位.如果说在i的位置插入和删 ...
随机推荐
- Mac 配置Apache Php编译ssl错误解决
终端 Php编译错误解决 //错误信息 unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) i ...
- k8s之Pod基础概念
1. 资源限制 Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象.一个Pod代表着集群中运行的一个进程.kubernetes中其他大多数组件都是围绕着Pod来 ...
- 【译】System.Text.Json 的下一步是什么
.NET 5.0 最近发布了,并带来了许多新特性和性能改进.System.Text.Json 也不例外.我们改进了性能和可靠性,并使熟悉 Newtonsoft.Json 的人更容易采用它.在这篇文章中 ...
- hgame-week3-web-wp
hgame第三周(web ak) 1.SecurityCenter 先看看hint(**vendor是第三方库和插件放置的文件夹,一般来源于composer的安装) 找到了使用的twig模板,应该是t ...
- 实现基于MYSQL验证的vsftpd虚拟用户访问
一.配置mysql服务器 1.1 安装mysql # yum -y install mariadb-server # systemctl enable --now mariadb.service &a ...
- 编译安装基于fastcgi模式的多虚拟主机的wordpress和discuz的LAMP架构
一.环境准备 两台主机: httpd+php(fastcgi模式) mariadb 服务器 软件版本: mariadb-10.2.40-linux-x86_64.tar.gz apr-1.7.0.ta ...
- pycharm关闭pytest
在pycharm中,如果py文件以 test 开头,则运行时会使用pytest执行,pycharm关闭pytest方式如下 File -> Settings -> Tools -> ...
- Spring Boot 热插拔技术应用
对Spring/Spring Boot使用频繁的开发者,应该常见在应用Application上加@EnableXXX类似的注解.其实这个@EnableXXX的注解就是热插拔技术,加了这个就可以启动对应 ...
- Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成(上)
Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成(上) Jenkins+Docker+SpringCloud持续集成流程说明 大致流程说明: 1) 开发 ...
- Vue 源码解读(2)—— Vue 初始化过程
当学习成为了习惯,知识也就变成了常识. 感谢各位的 点赞.收藏和评论. 新视频和文章会第一时间在微信公众号发送,欢迎关注:李永宁lyn 文章已收录到 github 仓库 liyongning/blog ...