备考数据结构
喜欢喝可乐的Rivendell
这个作者很懒,什么都没留下…
展开
-
直接插入排序
插入排序的思想是:将待排序序列分成两个序列,前面的序列保持有序,依次选取后面的序列的元素,在前面的序列中进行插入。初始时,有序序列的长度为1。//// Created by Vissan on 2022/5/9.//#include<stdio.h>/** * 直接插入排序 * @param nums * @param len */void insertSort(int *nums, int len) { int temp; int j; f.原创 2022-05-09 10:54:14 · 332 阅读 · 0 评论 -
328. 奇偶链表
给定单链表的头节点 head,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。 你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。/** * 相当于维护了两个链表,一个偶数链表和一个奇数链表,让两个奇偶指针分别遍历,最后在将偶链表的头结点接到奇链表后 */struct ListNode* oddEven.原创 2022-05-06 22:22:22 · 344 阅读 · 0 评论 -
线索二叉树的先序和中序创建
在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化。传统的二叉树由于只有指向左右孩子结点的指针,因此如果在某个业务中需要频繁的使用其前驱结点,因此这种情况下就会非常的不方便,只能采用从头遍历的笨办法,因此采用线索化的方法,通过将前后驱结点利用线索化的方法串联起来,会使得我们处理这些问题变得更加的方便。using namespace std;#define ElemType inttyped.原创 2022-05-03 10:15:25 · 228 阅读 · 0 评论 -
链队的实现
采用链式存储结构的队列。可以理解为特殊的单链表,只允许在一端插入,另一端删除在这里插入代码片#include <iostream>using namespace std;#define ElemType inttypedef struct LinkNode { ElemType data; struct LinkNode *next;} LinkNode;typedef struct { LinkNode *front, *rear; in.原创 2022-04-22 18:39:02 · 1291 阅读 · 0 评论 -
循环队列的实现
概念循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。 循环队列可以更简单防止伪溢出的发生,但队列大小是固定的。在循环队列中,当队列为空时,有front=rear,而当所有队列空间全占满时,也有front=rear。为了区别这两种情况,规定循环队列最多只能有MaxSize-1个队列元素,当循环原创 2022-04-22 18:36:23 · 749 阅读 · 0 评论 -
栈的链式储存
在上一篇我们学习了顺序栈的实现,但是大家要思考一个问题,就是顺序栈在初始化的时候会申请一大片连续的内存空间,这样在输入较少的情况下会造成大量的内存空间的浪费。那么要怎么解决这个问题呢?1、在沿着顺序栈的思路上我们可以取用共享栈的方法,让两个栈共享一片内存空间,这个时候我们在初始化的时候只需要定义两个栈顶指针top和bottom,分别让其指向设定容量的底部和顶部,比如我们设定MaxSize=100,那么我们就可以让Top初始化为-1,bottom初始化为100,在进行相关的操作即可。注意此时栈满的条件为 .原创 2022-04-21 11:35:33 · 1262 阅读 · 0 评论 -
顺序栈的实现
1、栈的定义栈是只允许在一端进行操作的线性表。2、栈的特性后进先出(LIFO)3、名词解释栈顶(Top):线性表允许进行插入删除的一端栈底(bottom):固定的,不允许进入删除和插入的一端空栈:不含任何元素的空表#include <iostream>using namespace std;#define ElemType int#define Maxsize 10typedef struct { ElemType data[Maxsize]; i.原创 2022-04-21 10:44:53 · 65 阅读 · 0 评论 -
单链表的实现
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。在本文中单链表都使用了头节点来简化操作,头指针head指向头结点。链表由头指针唯一确定,单链表可以用头指针的名字来命名。#include <iostream>using namespace std;#define ElemType int.原创 2022-04-19 21:19:44 · 759 阅读 · 0 评论 -
顺序表的实现
线性表的基本实现线性表的顺序存储又称为顺序表,顺序表的关键在于理解逻辑上相邻的元素在物理位置上也相邻。代码实现较为简单,但需要注意线性表中的位序是从1开始的,这点和数组下标从0开始有一定的区别,在进行删除和查找的操作时需要注意题目所给的条件,是位序还是数组下标。#include <iostream>#include <cstdlib>using namespace std;#define ElemType int#define InitSize 10typed原创 2022-04-18 11:24:16 · 115 阅读 · 0 评论