自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 学习随记三十三——递归实现AVL树

递归实现AVL树 什么是AVL树: AVL树是一种自调整树,在每次插入和删除后如果平衡被破坏了就会进行自我调整达到重新平衡,AVL树是一种特殊的二叉查找树,它允许左右子树高度最多相差一,当树的平衡遭到破坏时通过单、双旋转重新达到平衡,实现AVl树的关键在于插入,每次插入后要判断树是否平衡。 结点声明: typedef struct Avlnode{ ElementType data=0; struct Avlnode* Left=nullptr; struct Avlnode* Right=nullp

2021-04-21 21:58:16 162

原创 学习随记三十二——不使用递归完成二叉查找树

不使用递归完成二叉查找树 相较于使用递归,不使用递归实现二叉查找树的操作稍显复杂,但是效率要高,其中最复杂的是删除操作。 结点声明: typedef struct TreeNode{ ElementType data=0; struct TreeNode* Left=nullptr; struct TreeNode* Right=nullptr; }TreeNode; typedef TreeNode* Bintree; 使用的函数: 1、插入函数:int Insert(Bintree*,ElementTy

2021-04-17 09:47:57 162

原创 学习随记三十一——递归实现二叉查找树

二叉查找树 什么是二叉查找树:左子树中的元素都比父节点元素小,右子树中的元素都比父节点中的元素大 二叉查找树的基本操作: 1、生成一颗空树 我选择使用递归来完成,如果传入的地址非空就先递归删除左子树再递归删除右子树;也可以直接生成一个空根。 2、查找元素 先判断传入的指针是不是空指针,如果非空再进行比较,如果待查找元素比结点元素小则在该结点的左子树中递归查找,大则在右子树中递归查找,相等则返回该结点地址。 3、插入元素 *4、删除结点 5、打印树中元素 使用中序输出,先递归输出结点左子树的元素再递归输出右子

2021-04-13 08:47:40 364

原创 学习随记三十——双端队列

双端队列 基本原理:就是将双链表运用到队列上 整体代码: #include<iostream> typedef struct Queue{ int data; struct Queue* next=nullptr; struct Queue* previous=nullptr; }Queue; typedef struct Linkqueue{ Queue* front=nullptr; Queue* rear=nullptr; }Linkqueue; using namespace

2021-04-06 20:32:09 69

原创 学习随记二十九——使用单链表实现队列

使用单链表实现队列 使用单链表实现队列其实和尾插法实现单链表的思路没什么两样,队列和栈其实就是运算受到限制的单链表,尾插法运用在队列中,头插法运用在栈中,现在我才比较深刻的理解了头插法和尾插法的原理和应用并熟练运用。 基本思路:其实就是尾插法的变形,声明一个包含两个结点指针的结点,一个指向链表头一个指向链表尾,每次插入元素在表尾,删除元素在表头 整体代码 #include<iostream> typedef struct Queue{ int data; struct Queue* next

2021-04-06 09:59:38 234

原创 学习随记二十八——循环队列的实现

循环队列的实现 基本思路:利用模运算来判断队列的空与满,其他操作与思路与最基本的用数组实现队列一样 整体代码: #include<iostream> const int quesize=10; typedef struct Queue{ int data[quesize]={0}; int front=0; int rear=0; }Queue; using namespace std; int Isempty(Queue*); //判队空 int Isfull(Queu

2021-04-04 21:55:10 83

原创 学习随记二十七——使用数组实现队列

使用数组实现队列 基本思路:队列和栈其实差不多,都是运算受限制的线性表,操作原理类似,一个成员记录队首,一个成员记录队尾,当队首成员等于队尾成员时即队列空,当队尾成员等于数组最大长度减一时即队列满,但这种会造成假溢出,入队元素在队尾,出队元素在队首。 整体代码: #include<iostream> const int quesize=100; typedef struct Queue{ int data[quesize]={0}; int front=0; int rear=0; in

2021-04-04 15:24:00 70

原创 学习随记二十六——支持FindMin操作的栈(链栈)

支持FindMin操作的栈(链栈) 基本思路:在栈顶指针结构体中包含一个min指针指向最小元素即可 整体代码; #include<iostream> typedef struct Stack{ int data; struct Stack* next; }Stack; typedef struct Linkstack{ Stack* top; Stack* min; }Linkstack; using namespace std; int Isempty(Linkstack*); int

2021-04-01 10:05:52 193 1

原创 学习随记二十五——支持FindMin的栈(顺序栈)

支持FindMin的栈(顺序栈) 基本思路:没什么好说的声明一个含有min记录最小值的标志变量,每次入栈时比较下就可以了 整体代码: #include<iostream> const int stacksize=100; typedef struct Stack{ int data[stacksize]; int top=-1; int min=data[0]; }Stack; using namespace std; int Isempty(Stack*); int Isfull(Sta

2021-04-01 09:20:37 141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除