为当前线性表的长度 int listSize; //listSize为线性表的总长度 } SqList; /*创建线性表 */ void initList(SqList...->length = 0; //创建线性表的时候没有数据元素,长度默认为0 } /* **判断顺序表是否为空 */ bool listEmpty(SqList *L){...printf("创建线性表后\n线性表的当前长度:%d", L.length); printf("\n线性表的总长度:%d", L.listSize); if(listEmpty...(&L)){ //判断表是否为空 printf("\n此时线性表为空"); } else { printf("\n此时线性表不为空");...:%d\n", L.length); listTraverse(&L); scanf("%c", &ch); return 0; }
SL* ps, SeqListType x);//头插 //头销 & 尾销 void SLPopBack(SL* ps);//尾 void SLPopFront(SL* ps);//头 这是SL.c文件
头文件 list.h #define MaxSize 50 //表长度的初始定义 typedef struct{ ElemType data[MaxSize]; //顺序表的元素 int length...; //顺序表的当前长度 }SqList; //顺 序表的类型定义 //初始化 int Initiate(SqList &L) { L.length=...int x; Initiate(mylist); for(int i=1;i<11;i++)//这里插入了1-10这10个值 { ListInsert(mylist,i,i); } //输出顺序表中的所有元素
你们的每个赞都能让我开心好几天✿✿ヽ(°▽°)ノ✿ 目录 一、学习内容 二、准备工作 三、顺序表的结构 四、顺序表的基本操作 1. 创建顺序表 2. 按数值查找 3. 按位置查找 4....销毁顺序表 7. 求前驱算法 8....因为顺序表的数据类型不一定是int,有可能是double等其他类型,采用宏定义的好处就是:若需要改变顺序表的数据类型,只需要在宏定义处改变int为其他的数据类型即可(理论上确实如此,但由于我的代码后面用到了随机数产生顺序表的元素...实际上就是表明顺序表基本操作的一个状态。用bool逻辑值也可以,或者等等,只要能表示出顺序表的基本操作的状态即可。...销毁顺序表 Status List_Destroy(Sqlist *L) { if(status==NoCreate) { printf("您还没有创建顺序表!
*/ SqList CreateList_Sq() { SqList* list=(SqList*)malloc(sizeof(SqList)); //创建顺序表 return...*list; } /** *初始化顺序表 *返回1 表示初始化成功 *返回0 表示初始化失败 */ int InitList_Sq(SqList* L) { L->elem=(ElemType...*)malloc(sizeof(ElemType)*LIST_INIT_SIZE); //创建动态数组并把地址赋给顺序表基址 if(!...printf("%d\t",list.elem[i]); if((i+1)%5==0) printf("\n"); } return 0; } 严蔚敏老师的教材里用到引用传值,纯C语言无法实现...上例实现了创建、初始化、插入的封装。 感受到了数据结构的魅力。 参考资料:《数据结构(C语言版)》作者 严蔚敏
(注释写的挺详细的) 顺序表详解及其实现 一 什么是顺序表 线性表 (linear list): 线性表是最基本,最简单,也是最常用的一种数据结构。...(顺序存储结构)和链表(链式存 储结构) 顺序表: 在计算机内存中以数组的形式保存的线性表 二 顺序表的代码实现(注释详细) 1....顺序表的初始化 多文件编写- Table.h (用于函数定义) , Table.c (写入函数内容与Table.h联合使用) , main.c (主程序) 文件名Table.h //结构体 Table:...(表以创建完成,只需向表中存储内容) Table* SetTable(Table* ptable); 文件名:Table.c (尝试多文件编写) // 创建一个(int型数据)顺序表 // 参数:初始长度...输出顺序表 displayTable(t); return 0; } 2.顺序表的基本操作 这里只给出Table.c的代码实现,具体内容见完整代码 增(插入元素) ?
顺序表一般分为;两种:1.静态顺序表 2.动态顺序表 静态顺序表实际作用不大,本篇主要讲解动态顺序表. 2.1 静态顺序表简单介绍: 静态顺表是指顺序表的容量是固定的,如果看过c语言实现通讯录的友友们...,对于静态顺序表可以轻松拿捏. 2.2 动态顺序表: 三、顺序表的常见操作(接口) 3.1 顺序表的类型声明: //动态版 typedef int DataType; #define MAX 10...false; } 3.6 顺序表的删除操作 顺序表的"尾删" 顺序表的尾删也是很舒服的....PrintSQL(SQL SL); void PrintSQL(SQL* SL); //顺序表的销毁 void DestorySQL(SQL SL); 函数实现区(SQList.c) #define...SL) { assert(SL); free(SL->data); SL->data = NULL; SL->size = 0; SL->capacity = 0; } 主测试区(test.c)
一、概念 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 顺序表一般分为 1、静态顺序表:使用定长数组存储元素。...2、动态顺序表:使用动态开辟的数组存储 我们一般使用动态顺序表,因为静态顺序表的数组大小固定的,而动态可以根据我们需求的不同去在线扩容,所以接下来的文章围绕如何实现动态顺序表来讲解。...二、接口实现 对数据结构我们一般采用增删查改去实现。...int SeqListFind(SeqList* ps, SLDateType x); // 顺序表在pos位置插入x void SeqListInsert(SeqList* ps, int pos,...心得: 顺序表开启了数据结构的的序章,顺序表算是很简单的数据结构了,从此我们需要敲一部分代码,编译一次,不能一股脑的输出,结果编译发现好多个bug,需要写一部分,编译一部分,这样才更加的有持续性。
一、顺序表的概念及结构 线性表 线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串......二、顺序表分类 顺序表和数组的区别: 顺序表的底层结构是数组,对数组的封装,实现了常⽤的增删改查等接口,逻辑结构是线性,且物理结构也是线性。...1、静态顺序表:使用定长数组存储元素 静态顺序表缺陷:空间给少了不够⽤,给多了造成空间浪费 2、动态顺序表:按需申请 3、动态顺序表的实现 #define INIT_CAPACITY 4 typedef...:不能执行删除; 顺序表不为空:删除最后一个有效数据。...size - 1] = -1; ps->size--; } 四、头删 顺序表为空:不能执行删除操作; 顺序表不为空:后面的数据往前挪动一位。
【线性表】之顺序表 线性表 线性表(linear list)是n个具有相同特性元素的有限序列 。...线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直线。...概念:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 顺序表一般可分为: 1.静态顺序表:使用定长数据存储。...2.动态顺序表:使用动态开辟的数组存储。...下面的代码实现的是动态顺序表 结构定义 typedef int SeqListDataType; typedef struct SeqList { SeqListDataType* arry;//指向动态开辟的数组
文章目录 线性表的常规操作 定义顺序表结构体 初始化顺序表 顺序表的销毁 清空顺序表 顺序表判空 求顺序表的长度 顺序表的遍历 顺序表的插入(重点) 算法实现 表尾插入 表中插入 顺序表的删除(重点...,而 C语言中的数组是定长 的,那么该如何用数组实现顺序表呢?...如果使用静态数组实现的顺序表,我们无需手动释放资源,因为程序结束后系统会自动释放内存;而如果使用动态内存分配实现的顺序表,就需要我们手动释放内存,实现如下: #include "stdio.h" #include...len加1,此时插入成功,返回 TRUE 算法实现 /* * 指定位置在顺序表插入元素 * pos 逻辑下标 (1, 2, 3,...欢迎大家下载 C语言实现数据结构
动态顺序表 准备工作 检查,扩容 头插头删,尾插尾删 顺序表查找 顺序表打印 在指定位置插入和删除x 完整版顺序表 准备工作 我们还是分一个头文件和两个源文件 sequence.h sequence.c...test.c sequence.h #include typedef struct Sequence_List { int* p;//顺序表的初始地址 int count...;//元素数量 int capacity;//容量 }SL;//顺序表的动态储存 sequence.c void Initialize(SL* s)//初始化顺序表 { assert(s);//判断...s是否为空指针 s->p = NULL; s->count = 0; s->capacity = 0; } void Destroy(SL* s)//释放顺序表内存 { assert(s);...#include "sequence.h"; void Initialize(SL* s)//初始化顺序表 { assert(s); s->p = NULL; s->count = 0; s->
了解到顺序表是线性表的一种,接下来我们进入正题,开始正式学习顺序表。 1.顺序表的概念与结构 顺序表的概念:顺序表是一段按照连续的内存地址将数据元素依次存储的数据结构。...顺序表和数组的区别:虽然顺序表的底层结构是数组,但是我们在实现顺序表的过程中,对数组进行了封装,在数组的基础上增加了对它的一些方法,例如增删查改等操作。...2.顺序表的分类 顺序表可以分为静态顺序表和动态顺序表。顾名思义,静态顺序表的大小是固定不变的。...接下来我们在以上结构的基础上,一一实现动态顺序表的基本功能。...3.顺序表的实现 3.1 结构定义及方法的声明 #include #include #include typedef int SLDataType
2-1 线性表之顺序表 0、数据结构大致包含以下几种存储结构: 线性表:还可细分为顺序表、链表、栈和队列; 树结构:包括普通树,二叉树,线索二叉树等; 图存储结构; 1、线性表 线性表,全名为线性存储结构...使用顺序表存储数据之前,除了要申请足够大小的物理空间之外,为了方便后期使用表中的数据, 顺序表还需要实时记录以下 2 项数据: ● 顺序表申请的存储容量; ● 顺序表的长度,也就是表中存储数据元素的个数...; # 正常状态下,顺序表申请的存储容量要大于顺序表的长度。...顺序表可以有两种实现方式: 静态顺序表 :一般使用数组来实现, 动态顺序表:一般使用动态申请的内存来实现,比如C语言中是malloc,C++中用new ①静态顺序表的程序实现: 头文件 sq_list_...②动态顺序表的实现 头文件sq_list_02.h #ifndef SQ_LIST_02_H_ #define SQ_LIST_02_H_ #define MAX 10 typedef struct
顺序表一般可以分为静态顺序表和动态顺序表: 静态顺序表:使用定长数组存储元素。 缺陷:给小了不够用,给大了可能浪费,不实用。 动态顺序表:使用动态开辟的数组存储。...动态顺序表可根据我们的需要分配空间大小 size 表示当前顺序表中已存放的数据个数 capacity 表示顺序表总共能够存放的数据个数 2.2 动态顺序表的接口实现 静态顺序表只适用于确定知道需要存多少数据的场景...静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小,所以下面我们实现动态顺序表。...首先新建一个工程: SeqList.h(顺序表的类型定义、接口函数声明、引用的头文件) SeqList.c(顺序表接口函数的实现) Test.c(主函数、测试顺序表各个接口功能) (1)初始化顺序表:...测试,删除数据最终代码: void TestSeqList6() { SL sl;//定义顺序表的结构 SLInit(&sl);//初始化,传给了SeqList.c中的函数,实参,传给形参,形参是实参的临时拷贝
顺序表结构的存储方式非常容易理解,操作也十分方便。但是顺序表结构有如下一些缺点: 1.在插入或者删除结点时,往往需要移动大量的数据。...DATA ListData[MAXLEN+1]; //保存顺序表的结构数组 int ListLen; //顺序表已存结点的数量 } SLType; /**定义了顺序表的最大长度MAXLEN...,顺序表数据元素的类型DATA及顺序表的数据结构SLType。...在数据结构SLType中,ListLen为顺序表已存结点的数量,也就是当前顺序表的长度, ListData是一个结构数组,用来存放各个数据结点。...**/ //初始化顺序表 void SLInit(SLType *SL){ SL->ListLen=0; //初始化为空表 } /**这里并没有清空一个顺序表,你们可以采用相应的程序代码来清空
i++; j--;//i就增加一位,j就减少一位 } } } int main() { SqList sqA; int i; printf("请输入顺序表...A的元素:"); for (i = 0; i < 10; i++) { printf("顺序表第%d个元素", i); scanf("%d", &...sqA.data[i]); } sqA.len = 10; move(sqA); //调用move完成移动 printf("奇偶排序后顺序表A中的元素为:")
目录 前言: 模拟实现: 构造函数: 析构函数: 容量调整(reserve): resize函数: 尾插(push_back): 尾删(pop_back): 插入(insert): 销毁(erase...): []重载: 交换(swap): =重载: 代码 前言: 在学习vector的功能后,我自己模拟实现了一些vector的基本功能,这篇文章用来分享一下,也便于我后续的复习。...模拟实现: 总所周知vector中迭代器是遍历vector的重要工具,既然我这里只是简单的模拟,那迭代器就用简单的指针来模拟,先typedef一下: vector可以装很多类型,int,char,float...finish指向vector内所有有效数据的后一个 _endofstorage指向vector容量的最后一个 给缺省值都为空指针: 然后再来几个简单,但又很重要的函数: 构造函数: 我这里只实现...这里的push_back函数也就是尾插函数后面会实现,这里先复用。 2.vector v1(v2): 这个也就是拷贝构造函数: 同样这里的reserve函数也就是容量调整函数后面实现。
文章目录 顺序队列常规操作 定义顺序队列结构体 初始化顺序队列 顺序队列判满 顺序队列判空 计算顺序队列的长度 顺序队列入队(EnQueue) 顺序队列出队(DeQueue) 顺序队列各操作测试 源代码...// 初始化顺序队列 int QueueFull(); // 判断顺序队列满 int QueueEmpty(); // 判断顺序队列空...为了在C语言中描述方便起见,初始化建空队列时,令 front = rear = 0; 每当插入新的队尾元素时 “尾指针增1”;每当删除队头元素时 “头指针增1”。...return q -> front == q -> rear; } 计算顺序队列的长度 /* * 求顺序队列的长度(元素个数) * q 顺序队列 */ int QueueLength(Queue...源代码 源代码已上传到 GitHub Data-Structure-of-C,欢迎大家下载 C语言实现数据结构
文章目录 顺序栈的常规操作 定义顺序栈结构体 初始化顺序栈 顺序栈判满 顺序栈判空 计算顺序栈的长度 顺序栈入栈(Push) 顺序栈出栈(Pop) 顺序栈各操作测试 源代码 ?...s -> top = 0; return s; } 顺序栈判满 /* * 顺序栈判满 * s 顺序栈 */ int StackFull(Stack s){ if(s == NULL){...return FALSE; } return s -> top == MAXSIZE; } 顺序栈判空 /* * 顺序栈判空 * s 顺序栈 */ int StackEmpty(Stack s...){ if(s == NULL){ return FALSE; } return s -> top == 0; } 计算顺序栈的长度 /* * 求顺序栈的长度(元素的个数) * s 顺序栈...源代码 源代码已上传到 GitHub Data-Structure-of-C,欢迎大家下载 C语言实现数据结构
领取专属 10元无门槛券
手把手带您无忧上云