- 博客(20)
- 收藏
- 关注
原创 数据结构15——串的定义、类型定义及存储结构
当且仅当两个串的长度相等并且对应各个位置上的字符都相同时,这两个串才是相等的。一个地址占用四个字节,多个字符可以放在一个结点中,一个字符占用一个字节,提高存储密度。定义一个256长度的数组,加一个表示串的长度的变量,生成了一个叫S的字符串。串的内容只能是字符,数组的元素是线性表,广义表的元素还是广义表。一个串中任意个连续字符组成的子序列(含空串)b在d中的位置是5(ppt有误)不包含自身的所有子串。
2023-10-12 11:34:59 105
原创 数据结构13——栈的顺序和链式表示和操作的实现,栈与递归
将top指针所指的那块空间用*运算符赋值为e,top++是top指针移到下一个空间。栈和队列也是线性表,栈后进先出:放电池,存子弹;先保存数据,在保存指针,然后将头指针也就是栈顶指针移动到正确位置。递归定义的数学函数;具有递归特性的数据结构;p=S是把要删掉的指针用p保存起来。top指针先下移,在用e返回其值。
2023-10-10 15:15:04 93 1
原创 数据结构12——双向链表和插入操作、删除操作
在单链表的每个结点里在增加一个指向其直接前驱的指针域,这样链表中就形成了有两个方向不同的链,故称为双向链表。如果知道要删除的元素的位置,算法时间复杂度为O(1)如果不知道,则需要查找位置,算法时间复杂度为O(n)考虑前后结点,前驱和后继,两头确认,考虑四步。
2023-10-07 15:29:25 150 1
原创 数据结构11——循环链表及合并算法
因为一般对链表尾部操作较多,所以循环链表不用头指针,而用尾指针,用尾指针找a(n)和a(1)的时间复杂度都是O(1)
2023-09-22 20:42:49 185
原创 数据结构10——单链表的建立算法
元素插入在链表头部,也叫前插法。元素插入在链表尾部,也叫后插法。算法的时间复杂度是O(n)算法的时间复杂度是O(n)
2023-09-21 15:53:17 65
原创 Python100题——03 区间内的所有素数
根据素数的定义:素数,也被称为质数,是在自然数系中大于1的数,除了1和它本身以外,不再有其他因数,不能被其他的任何整数整除的数。1.'for num in (11,25)'是一个for循环,它的意思是:对于在元组(11,25)中的每一个数,将其赋值给变量'num',然后执行下面的代码块。所以让变量idx从2遍历到num的平方根,idx被其整除,如果余数等于0,说明被除尽,idx是num的其中一个因子,不是素数,否则是素数。在定义一个变量遍历2到num的平方根(遍历到平方根可以提高算法的效率,
2023-09-21 15:01:16 71
原创 数据结构07——单链表查找算法
从链表的头指针出发,顺着next域逐个结点往下搜索,直到查找到与要搜索的值相等的数据为止。3)如果查遍整个链表都没有找到其值和e相等的元素,则返回0或“NULL”2)如果找到一个值与e相等的数据元素,则返回其在链表中的地址。1)从第一个结点起,依次和e比较。
2023-09-20 19:32:22 717 1
原创 数据结构06——单链表取值算法
1)从第一个结点(L-> next首元结点)顺链扫描,用指针p指向当前扫描到的结点,p初值。从链表的头指针出发,顺着next域逐个结点往下搜索,直到搜索到第i个结点为止。L是头指针,头指针存放头节点的地址,L赋值给P,所以P指向头结点。4)当j == p 时,p 所指的结点就是要找的第i 个结点。2)j 做计数器,累计当前扫描过的结点数,j 初值为1。头指针的next域指向首元结点,所以S指向首元结点。3)当p 指向扫描到的下一结点时,计数器j 加一。
2023-09-20 19:03:50 392 1
原创 Python100题——02 数字的阶乘
定义一个阶乘函数和存放结果的变量result,如果输入数字num,num本身与(num-1)相乘的结果存放到result变量中,每次相乘num减一,直到num=1为止,result即为num的阶乘。
2023-09-19 19:02:06 65
原创 数据结构05——单链表的基本操作的实现
(第一个存储数据的结点)开始,指针变量P指向首元结点,依次把所有结点清除掉,再把头结点指针域设置为空。结点向后移动,指针变量P可以被删除,循环条件是L非空,当L不是空节点时,操作会反复执行。在定义一个指针变量q,存放p的下一个结点,才能把p删掉,不然删掉p后找不到下一个结点。链表仍然存在,但是链表中无元素,成为了空链表(头指针和头结点仍然存在)Lnode *q定义一个指针p,头指针赋值给指针变量p,指向。从首元结点开始,依次计数所有结点,每数一个计数器+1。,存放着头结点的地址。
2023-09-19 14:18:59 61
原创 数据结构03——链式表表示、实现
2)访问时只能通过头指针进入链表,并通过每个指针的指针域依次向后顺序扫描其余结点。结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻,链表中逻辑次序和物理次序不一定相同。头结点的指针域存放第一个数据元素的地址,数据域写什么都可以,但是头结点不是数据元素,所以不能计入链表长度。1)结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。1.便于处理首元结点(首元结点和后面的结点同等看待,无需特殊处理)循环链表:结点首尾相接,最后一个结点的指针域存放首结点的地址。
2023-09-18 16:34:13 78
原创 数据结构02——线性表的顺序表小结
2)在访问线性表时,可以通过公式快速的计算出任何一个数据元素的存储地址。因此可以粗略的认为:访问每个元素所花的时间相等。1)利用数据元素的存储位置表示线性表中相邻元素之间的前后关系,即线性表的逻辑结构与存储结构一致。属于静态存储形式,数据元素的个数不能自由扩充。注:这种存取元素的方法被称为随机存取法。在插入、删除某一元素时,需要移动大量元素。存储密度大(结点本身所占存储量。空间复杂度:S(n)=O(1)可以随机存取表中任一元素。结点结构所占存储量)时间复杂度:O(n)
2023-09-18 15:13:55 68
原创 Python02——对象的基本组成和内存示意图
2.类型(type):类型用于标识对象存储的数据的类型,类型可以限制对象的取值范围以及可执行的操作。可以使用函数 type(obj) 获得对象的所属类型。1.标识(identity):标识用于唯一标识对象,通常对应于对象在计算机内存中的地址。3.值(value):标识对象所存储的数据的信息,使用函数 print(obj) 可以打印出值。每个对象由:标识(identity)、类型(type)、值(value)组成。变量是对象的引用,变量只存放对象的地址,所以使用变量时不需要注明类型type。
2023-09-14 16:54:16 148 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人