数据结构笔记
文章平均质量分 55
May ambition
代码人照耀代码人
展开
-
栈与队列的深入讨论
1.中缀表达式转换成后缀表达式在高级程序设计语言的编译软件里,就是用类似的转换算法对算数公式进行转换,最终将其转换成计算机可以直接执行的机器指令序列。设计思路:关键在于如何恰当地去掉中缀表达式的括号,在必要时按运算符的优先级调换运算符的次序。用栈存放表达式中的开括号和暂时不能确定次序的运算符。实现:做两道题试试2.递归函数的实现大多数程序设计语言运行环境所提供的函数调用机制是底层的编译栈支持的。运行时环境值得是目标计算机用来管理存储器并保存执行过程所需信息额寄存器及存储器的结构。静态分原创 2021-05-12 16:43:48 · 242 阅读 · 1 评论 -
栈和队列
他们均是线性表的应用和推广。1.栈==定义:==只允许在一端进行插入或删除操作的线性表。栈顶是允许进行插入删除的那一端。栈底是固定的。具有后进先出的特点。(研究数据结构的注意点:逻辑结构、存储结构和对数据的运算)栈的数学性质: n个元素进栈,出栈排列顺序为C2n n/(n+1)。栈的顺序结构:维护一个数组和栈顶指针。进栈:指针+1,进栈。出栈:出栈,指针-1栈空:top=-1不同的栈顶指针设置方式,操作会有所不同。顺序栈之共享栈:利用栈底位置相对不变的特性,可以让两个顺序栈共享一个.原创 2021-05-08 16:16:29 · 996 阅读 · 0 评论 -
线性表的链式表示及顺序存储
我们还记得存储结构里不仅需要存储元素,还需要存储元素与元素的关系。顺序表靠着其天然的物理结构自然表达出这种关系,不需要附加额外的信息去表示这种关系,简直赚透了。而像链式存储这样非顺序存储的结构,需要额外附加指针去表示这种关系。1.单链表的定义:处存放元素本身信息外,还需要存放一个指向后继的指针。头指针:头指针来标识一个单链表,其为NULL时表示一个空表。为了操作上的方便,可以在单链表第一个节点前附加一个节点,称为头节点,并把第一个节点的位置信息存放在头节点里。除此之外,头节点可以不设置任何信息,也可以原创 2021-05-06 14:39:25 · 342 阅读 · 0 评论 -
第二章课后习题(1)
3.记录线性表中不为x的个数k,初始值为0.没检测到一个不为x的值,就开始赋值,并使k+1.最后使(打破一般的删除模式),最后整个数组的长度便是k。4.如果是有序表,不需移动所有元素,找到第一个范围内的元素和范围内的最后一个元素的后继,然后进行移动操作。最后整个数组的长度便是i。5.如果不是有序表,则采用和3类似的方法。可以换种思路,一边记录在范围内的个数,一边对不在范围内的元素进行移动。6.由于题目条件是有序表,所以重复元素的物理位置肯定连续。所以设置i,j,判断前后元素是否相同,来赋值.原创 2021-04-28 14:07:26 · 99 阅读 · 0 评论 -
2021-04-12
https://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-zhao-xiang-jie-by-labuladong/我周围的人几乎都认为二分查找很简单,但事实真的如此吗?二分查找真的很简单吗?并不简单。看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的:Although the basic idea of binary search is comparatively straightforward, the detail转载 2021-04-12 14:11:20 · 85 阅读 · 0 评论 -
2021-04-08
至少数据结构对于现在的、今天的我是反胃的。理论上的东西并没让我厌恶,对于实践我会莫名其妙的抵触,这也是为什么一直以来学习那么low的原因之一。可是谁又不想仰望星空呢,有时候那星光真能麻痹自己忘记了周围的环境以及现在的自己。已经是大三下的考研人了,是该磨磨自己的懒惰了。以后我会每天坚持做笔记并且每天复习,将思路在脑子里过一遍。希望不久的将来,就会看到努力的硕果。...原创 2021-04-08 15:01:11 · 100 阅读 · 0 评论 -
malloc、alloc和realloc函数的区别
在程序的执行期间分配内存时,内存区域中的这个空间称为堆(heap)。还有另一个内存区域,称为栈(stack),其中的空间分配给函数的参数和本地变量。在执行完该函数后,存储参数和本地变量的内存空间就会释放。堆中的内存是由程序员控制的。在分配堆上的内存时,由程序员跟踪所分配的内存何时不再需要,并释放这些空间,以便于以后重用它们。 使用动态内存很明显的好处就是:不需要预先分配存储空间且分配的空间可以根据程序的需要扩大或缩小,这样可以有效的使用内存空间。malloc和free C函数库中的malloc和fr转载 2021-04-07 14:21:17 · 696 阅读 · 0 评论 -
什么是一个完整的数据结构,算法的概念以及算法的分析
数据结构的概念数据结构由三部分组成:逻辑结构、存储结构和数据的运算。逻辑结构主要描述数据之间的关系,一对一or一对多or 多对多(线性表、树、图)。存储结构就是逻辑结构在计算机中的实现,包括元素的表示和关系的表示存储结构主要有四种:顺序存储、链式存储、索引存储和散列存储。顺序存储的的评价:可以进行随机存取,每个元素占用最少的存储空间。但是由于其是顺序存储,会产生相应的外碎片,会出现空间利用效率的问题。除此之外,当进行增删操作时,开销较大。链式存储的评价:用到相应的指针去表示元素之间的关系,逻原创 2021-04-01 15:41:53 · 1236 阅读 · 0 评论