
数据结构
文章平均质量分 50
小栗子pola
这个作者很懒,什么都没留下…
展开
-
双链表 循环链表 静态链表 顺序表和链表的比较
双链表双链表的初始化,带头节点的情况,首先定义一个单链表,然后初始化过程是先开辟一个节点的空间,链表的头指针L指向这个节点,再将链表的头节点的前驱指针指向NULL,后继指针指向NULL。双链表的插入,在p节点之后插入s节点,首先判断p节点是否是空的,如果为空则返回错误,然后将s的next指针指向p的next,然后判断p的next指针否为空,如果不为空,执行p的next指针所指向的节点的前驱指针指向s节点,然后将s节点的前驱指针指向p节点,最后将p节点的next指针指向s。根据在p节点之后插原创 2021-08-07 18:19:45 · 382 阅读 · 0 评论 -
单链表的插入删除,查找,建立
1.按位序插入:带头节点的,定义指针P指向头节点,头节点是第0个节点,然后定义j表示当前p指向的是第几个节点,通过循环找到第i-1个节点,然后在第i个节点上插入元素e,具体插入过程是开辟一个节点的内存空间,指针s指向这个内存空间,将插入元素e放入此内存,然后将P节点的指针(指向P节点的下一节点的指针)给到s节点的指针,使得s节点的指针指向下一节点,然后将p节点的指针指向s节点。注意这个过程不能反了。平均时间复杂度是o(n),不能插入到不存在的位置。不带头节点的,插入第一个节点的操作和其他节点不.原创 2021-08-07 18:03:43 · 941 阅读 · 0 评论 -
单链表的定义
用链式存储实现线性表这种逻辑结构。单链表,介绍单链表的定义,如何用单链表实现线性表要求的基本运算和操作。单链表的每个结点存放数据元素和指向下一个结点的指针。用代码定义单链表,定义单链表的结点,包括数据元素,还有一个指向下一个结点的指针。构建一个新的结点,就是申请一个结点所需的空间,并用一个结点数据类型的指针指向这个空间。c语言中typedef关键字可以对数据类型重命名,可以将结点这一数据类型重命名为LNode,然后构建一个新的结点就可以写成LNode *p=。更简洁的方式是,定义完数据结点原创 2021-08-07 16:34:48 · 697 阅读 · 0 评论 -
顺序表的查找
分为按位查找,按值查找1.按位查找:获取线性表L中第i个位置的元素的值静态分配时,在数组中存放数据元素,查找时,直接返回数组中i-1的值,即可实现查找。动态分配时,动态分配数组的指针,数据类型要和元素的类型相同,当执行按位查找操作时,代码和静态分配时一样的,这里通过指针读取相应位置的数据元素,根据指针类型的不同来区分返回单个元素的字节大小,比如代码中指针指向地址为2000,查找元素时,返回L.data[i-1],因为指针类型是元素类型,每个元素为6字节,则data[0]就能读取并返回从当前地址开始六个原创 2021-08-07 16:24:33 · 2477 阅读 · 0 评论 -
顺序表的插入和删除
顺序表的插入操作先定义一个顺序表,这里是静态存储的方式,然后定义插入函数,为了增强鲁棒性,设置函数有一个布尔型的返回值,来判断插入位置是否有效,注意,插入函数的参数中,插入位置i指的是位序,从1开始的,而定义的顺序表是数组,位序中的第i个位置是数组里的第i-1,加入往第三位序插入元素3,要将第三位序的元素依次往后移动,然后在数组中第i-1的位置插入元素3,最后将当前顺序表长度加一,并且返回true表示正确插入。插入操作时间复杂度 分析最好 最坏 平均情况的时间复杂度,这里问题规模n是当前顺序表的长度原创 2021-08-07 16:15:21 · 3135 阅读 · 1 评论 -
顺序表的定义
顺序表指的是使用顺序存储这一结构实现线性表。顺序存储是把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中来,元素之间的关系由存储单元的邻接关系来体现。分为静态分配和动态分配C语言中得到一个数据元素大小的方式是sizeof(元素类型),比如sizeof(int)=4B。实现静态分配的具体例子首先,定义了一个顺序表,用静态数组来存放数据元素,然后定义了一个函数初始化顺序表,并在其中定义了此顺序表的初始长度为0,然后是主函数过程,这里不用把数组中的值都设置为0,因为现在也不需要读取,现在可读取.原创 2021-08-07 12:05:02 · 1920 阅读 · 0 评论 -
线性表的定义和基本操作
定义和基本操作就是这种数据结构的逻辑结构和运算线性表是具有相同数据类型 的n个数据元素的有限序列,n为表长,n=0时为空表。1.相同数据类型,即每个元素所占的空间一样大。2.元素个数有限并且由次序。3.第i个表示元素在线性表中的位序,i=1是表头元素,i=n是表尾元素。数组中第一个索引是0.4.除第一个元素以外,每个元素有且仅有一个直接前驱,除最后一个元素外,每个元素有且仅有一个直接后继。运算总结:一般数据操作为创销增删改查。函数定义为函数名(<参数类型>参数),注意原创 2021-08-07 11:51:31 · 221 阅读 · 0 评论 -
算法空间复杂度
空间复杂度:程序运行时的内存需求与问题规模的关系。本身这段代码占用部分内存,代码要转化为固定的格式,大小固定,然后代码中的数据,就是一些变量也需要占用固定的空间,整体来讲,算法的空间复杂度是不变的,S(n)=O(1),称为算法原地工作,即所需内存为常量。定义一个长度为n的数组,然后计算内存空间,这时的内存空间就和问题规模n有关系,从而计算出空间复杂度。只需关注存储空间大小和问题规模相关的变量。比如,一维数组,二维数组的定义。注:数组是什么数组是用于存储多个相同类型数据的集合,在C语言中,数组原创 2021-08-07 11:37:35 · 745 阅读 · 2 评论 -
算法时间复杂度
评判一个算法的时间开销算法时间复杂度:算法时间开销T(n)与问题规模n之间的关系。只保留时间开销的最高次幂的那个值,常数项也忽略,以此来比较复杂度。所以最终简化为数量级。用O表示,只关注这个数量级。时间复杂度比较顺序(考虑哪个函数增长的快)计算算法的时间复杂度加法法则(多项相加,只保留最高阶的项,且系数变为1);乘法规则(多项相乘,都保留)。随后再进行加法运算时,再根据顺序表判断保留哪一项。结论1,顺序执行的代码只会影响常数值,可以忽略结论2,只需挑循环中的一个基本操作分析它的执行原创 2021-03-09 22:36:50 · 178 阅读 · 0 评论 -
算法的基本概念
程序=数据结构+算法数据结构 是将现实世界的问题信息化,就是逻辑结构,相关运算的定义,存储结构的具体实现。算法 是处理这些信息,以解决实际问题的方法。算法的特性 :有穷性;确定性;可行性; 输入;输出。好算法 :正确性;可读性;健壮性;高效率(执行速度快,时间复杂度低)和低存储量需求(不费内存,空间复杂度低)程序要设计一个好的数据结构,然后设计一个好的算法。...原创 2021-03-09 22:23:52 · 102 阅读 · 0 评论 -
数据结构基本概念
目录1.数据元素和数据项2.数据结构和数据对象3.数据结构三要素4.数据类型和抽象数据类型小结1.数据元素和数据项要根据具体业务来确定数据元素和数据项。2.数据结构和数据对象数据结构可以看做各个数据元素之间的关系,比如在同一门店排队的顾客,每一号之间的关系。数据对象是指有同样性质的数据元素,比如所有门店排号的顾客。3.数据结构三要素如何把数据结构设计的更好,即各个数据元素之间的复杂关系以及操作,考虑三个方面:逻辑结构,物理结构(存储结构),数据的运算。1.逻辑结构,一般包括:集合,线性结原创 2021-03-09 22:20:50 · 162 阅读 · 0 评论 -
数据结构绪论
用程序代码把现实世界的问题信息化,比如存在微信里的钱数额,海底捞排号系统,微博互相关注,这些具体是怎么实现的。信息世界计算机或者手机中,底层是计算机硬件 组成部分,比如CPU,然后是操作系统,比如安卓,win,ios等,最上层就是实现具体功能的软件,由编程语言结合数据结构知识来实现的,计算机网络是指如何使得各个计算机或者手机之间连接起来的。...原创 2021-03-09 22:07:12 · 71 阅读 · 0 评论