空顺序表的实现(基于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的位置插入和删 ...
随机推荐
- iOS 模糊、精确搜索匹配功能方法总结 By HL
字符串搜索主要用于UITableView的搜索功能的筛选,过滤,查询 下面是一些流行的搜索查询方法 一.遍历搜索 for循环 根据要求:精确搜索(判读字符串相等) 模糊搜索(字符串包含) 相关知识 ...
- 通过示例学习PYTORCH
注意:这是旧版本的PyTorch教程的一部分.你可以在Learn the Basics查看最新的开始目录. 该教程通过几个独立的例子较少了PyTorch的基本概念. 核心是:PyTorch提供了两个主 ...
- Solution -「NOI.AC 省选膜你赛」array
题目 题意简述 维护一个长度为 \(n\) 的序列 \(\{a_n\}\),并给出 \(q\) 个操作: 将下标为 \(x\) 的数修改为 \(y\). 给定 \(l,r,k\),求最大的 \(m ...
- Solution -「洛谷 P4320」道路相遇
\(\mathcal{Description}\) Link. 给定一个 \(n\) 个点 \(m\) 条边的连通无向图,并给出 \(q\) 个点对 \((u,v)\),询问 \(u\) 到 ...
- CentOS 7 下升级OpenSSH 7.4p1到OpenSSH 8.4p1
文章目录 一.环境介绍 二.安装配置telnet 2.1.安装telnet-server 2.2.配置telnet 2.3.配置telnet登录的终端类型 2.4.启动telnet服务 三.切换登录方 ...
- 通过shell脚本统计elasticsearch indices每天的数量以及大小
前情提要: 最近elasticsearch集群总出问题,之前虽然修复了,现在又出现新的问题,于是PM要求拉取elasticsearch每天建立的索引有多少,索引有多大,需要对机器进行评估 客户现场无法 ...
- PHP7.x环境下安装redis扩展
注:以下介绍的安装方式为PHP的安装路径为/usr/local/php,如果你的服务器上PHP的安装目录不一致请按实际情况处理. 首先下载PHP7的redis扩展 wget https://githu ...
- 『无为则无心』Python面向对象 — 45、面向对象编程
目录 1.面向对象编程的概念 2.面向对象编程和面向过程编程的区别 (1)面向过程编程 (2)面向对象编程 3.举例理解面向对象 4.Python的面向对象编程 5.面向对象的几大核心特性 1.面向对 ...
- idea 自定义toString
实现功能: 1.自定义json格式 2.字符及时间类型添加null判断 3.时间进行格式化 步骤: 1.alt+insert-----toString---setting----templates 2 ...
- Nexus6-刷LineageOS系统(Windows10处理环境下)
0.观前注意 本方法不一定保证正确,我只是通过了此方法进入了手机,但是仍然有少部分apk无法安装(比如v2rayNG),但是正常的浏览器和qq是能够正常运行的. 1.刷机准备 一台Nexus6手机(能 ...