数据结构
文章平均质量分 66
Tohka2333
懒狗一枚,要开始写博客辣!
展开
-
数据结构——栈与队列以及题解
首先要实现栈以及队列,而栈的实现在上一个博客()内就已提及,在此处就不赘述了。队列实现由于队列具有先入先出,且只能在队尾入队队头出队的性质,用单向链表实现较为简单以及方便,用数组实现的话,不论是用数组头作队头还是数组尾,在入队或出队时都会比较麻烦,而且还需要考虑扩容;链表的话仅需要一个指针指向链表头结点,一个指针指向链表尾节点即可,入队就是在尾节点创建新节点出队就是在对链表进行头删,这两种操作都较为简单。实现代码:头文件对应函数。原创 2023-03-25 10:25:30 · 112 阅读 · 1 评论 -
数据结构题解——有效括号(以及栈的实现)
因此,我们就可以拿栈来接收左括号,当读到右括号时就与栈顶元素作比较,匹配就出栈并查看下一个括号,这么一来问题就解决了。虽然数组可以通过下标访问其内部对应元素,但是在这里我们构造的是栈,因此要避免直接访问内部的数据,不然就违背了栈的“先进后出”原则。若是如图所示的有效括号类型的话,第二次出栈的就会与第一次出栈的相匹配,但是很明显,当左括号和右括号对称顺序时(上代码之前,由于是栈来解决该题,那么建栈就是必须的一步,最简单实现方式就是数组实现(),既然通过栈来实现,那必然会考虑入栈问题,怎么入呢?原创 2023-03-24 16:56:33 · 96 阅读 · 1 评论 -
数据结构题解——复制带随机指针的链表
关于这几个问题,要知道,我们既然要返回复制后的链表,那么就要把复制的链表从原链表里提出来,然后链接,当然也要链接(还原原链表)。而random指针嘛,仔细观察会发现一个规律(除NULL外),复制节点的random指针应该指向的位置正好是对应原节点的random指针的下一个,既然如此那还不简单?最容易想到的必然是相对位置方法了,理解就是,比如下面这个,二号节点(13)的random指针指向一号节点(7),那么他指向的位置相对于整个链表的位置是一,因此,让复制来的链表也指向相同的相对位置就好了。原创 2023-03-20 22:11:27 · 100 阅读 · 2 评论 -
数据结构——栈与队列
(虽然栈是先入后出原则,如依次push(入栈)1,2,3,4,然后再全部pop,出栈顺序就是4,3,2,1。但是若没有规定入栈出栈顺序,那么出栈结果就不唯一,如先push一个再pop一个,那么出栈顺序依旧是1,2,3,4)概念:只允许在一端进行插入数据的操作,在另一端进行删除数据的操作的特殊形式线性表,队列具有先进先出FIFO(First In First Out)的原则。栈的实现推荐使用数组,一方面是结构简单,另一方面是对于普通栈而言数组能实现的功能就足矣(喜欢玩花的当我没说)。原创 2023-03-20 21:15:19 · 55 阅读 · 0 评论