![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法/数据结构
窗户外你的名字
这个作者很懒,什么都没留下…
展开
-
顺序链表的实现
顺序表相当于一个结构体,一个结构体就是一张表,结构体里面两个成员,一个成员是数组,一个是表示数组实际长度的int型变量原创 2018-09-09 21:55:33 · 1949 阅读 · 0 评论 -
红黑二叉树节点的插入
进行红黑树节点的插入时候我们必须结合红黑树的性质,要不是真的很容易忙半天却发现写的代码漏洞百出不符合红黑树的性质主要总的来说是性质,其实笼统的来说我感觉两条性质用来验证就差不多了好了,列举额一下吧。每个结点不是红色就是黑色根节点是黑色的如果一个节点是红色的,则它的两个孩子结点是黑色的对于每个结点,从该结点到其所有后代叶结点的简单路径上,均 包含相同数目的黑色结点每个叶子结...原创 2019-02-03 22:03:14 · 499 阅读 · 0 评论 -
AVL树节点的插入
先声明一下这里为什么只写了AVL树节点的插入哈 首先说一下AVL树的查找,因为查找并没有破坏节点位置。而我们的AVL树是在搜索树的基础上限定了树的左右树之间的高度不超过(-1 || 1),所以说查找是完全类比搜索二叉树的。 在来说一下删除吧,因为删除是也是要考虑树的高度,还有顺序的,这个想一想就有一点麻烦,不过只要多画几张图,把分类的几种情况理清楚了,还是可以画出来的,但是要清楚一个概念...原创 2019-02-02 23:42:10 · 1232 阅读 · 0 评论 -
搜索二叉树的增,查,删操作
首先说的应该是我们的搜索二叉树是的,而这个有序是中序的有序相对其他两个操作搜索二叉树的删除应该是最复杂的这个复杂的删除还是应该画图的,如果不画图是很难说清楚也很难理清楚的好了我们的图先派在这里了,下面操作也都是用这个图作为标准了当我们只是查看搜索二叉树时候我们并不需要修改搜索二叉树里面的节点也就是元素的顺序没有被我们打乱,所以了我们只需要清楚一个比较重要的概念就是头节点这个也是我们判断...原创 2019-02-02 16:34:47 · 197 阅读 · 0 评论 -
【剑指】通过前序,中序遍历来重建二叉树
已知二叉树的前序,中序遍历来重建二叉树好吧!既然是二叉树我们想到比较多的还是递归遍历,毕竟比较方便一点的。如果说前序和中序相比比较突出的一个特点就是根节点在数组下标当中的位置吧,毫无疑问,前序遍历根节点在数组首元素的位置这应该特点,我们剩下的重建二叉树完全是可以向侦探小说一样顺藤摸瓜还原真相了好吧看代码 /** * Definition for binary tree * stru...原创 2019-01-26 22:19:21 · 135 阅读 · 0 评论 -
二叉堆的一些基本操作,以及升序降序
我要理解二叉树如何定义一个堆的 必须是一颗完全二叉树 我们可以分大堆和小堆 这里主要通过顺序链表的方法定义堆 这是一个从上往下的大堆我们要如何存储这个堆了,显然我们需要一个数组,然后通过写算法实现这个堆的顺序存储。这里主要说一下堆的升序与降序,以及初始化,插入删除吧。堆其实理解起来相比二叉树的链式存储要容易很多,堆升序时候我们其实主要需要的这是一个判断条件结点是...原创 2019-01-02 15:02:16 · 328 阅读 · 0 评论 -
环形队列的创建以及一些基本的操作
我们的环形队列长什么样子的尼,那几句话也描述不出来概括不了他的样子,还是拿一张图看一下吧在没有插入数据时候他也就是长这个样子了,首位队外首位指针相交,都在这个初始队列块子的位置。唯一需要注意的一点是我们这里定义的这个环形队列的==头==只放了一个指针,我们数据的。我们的队外尾指针位置是随这个插入数据移动的,始终指向最后一个数据快的位置。插入数据移动一下吧,这样应该思路就比较清晰了。...原创 2018-12-31 16:33:03 · 2306 阅读 · 0 评论 -
带头双向循环链表
#pragma once#include<stdlib.h>#include<stdio.h>#include<assert.h>typedef int DataType;typedef struct DNode{ DataType data; struct DNode *next; struct DNode *prev;}DNode;DN...原创 2018-12-19 11:39:20 · 185 阅读 · 0 评论 -
通过栈实现括号的匹配
我们通过顺序表创建一个栈 如果我们需要实现一组括号的匹配,我们首先必须知道这个括号数组当中所有的括号符号。 常见的括号符号也就 ‘[]’ ‘{}’ ‘()’,还有的一些奇奇怪怪的括号就不说了啊。 我们首先需要按思维逻辑思考,需要完成括号的左右搭配,即相同类型的括号有左也有右。那么我们必须把这个括号数组重现的遍历一遍,把左右区分开。 我们区分开了一个左括号,和有括号,那么如果我们借助栈,我...原创 2018-12-24 21:24:51 · 236 阅读 · 0 评论 -
复杂链表的复制,有一个next指针指向下一个结点,还有一个random指针指向这个链表中的一个随机结点或者NULL,先要求复制这个链表,返回复制后的新链表。
定义一个简单的复杂链表。注意1.复杂链表的复制先处理复杂链表为空,这之间返回。2.当复杂链表不为空,复制链表需要在原链表每个节点连接处插入新结点。3.新结点随机指针域,(随机指针域为原结点随机指针域的下一个节点。4.将新链表从原链表上拆下。#include <stdlib.h>#include <assert.h>typedef struct CLNo...原创 2018-12-18 20:07:11 · 268 阅读 · 0 评论 -
逆序链表
如图我们需要将一个正向链表首尾倒置,实现一个相反的链表。方法一:我们可以定义一个result节点并且把这个节点一直置空,那么我们就可以借助这样一个节点实现首位逆置了。ListNode * ReverseList(ListNode *first){ ListNode *cur = first; ListNode *node; ListNode *result = NULL; wh...原创 2018-12-18 19:42:16 · 369 阅读 · 0 评论 -
从尾到头打印单链表
可运用两种方法打印:方法一:循环算法方法二:递归压栈调用方法一:先调用我们已经写好的链表头文件List.h链表构造方面不过多说明。void PrintReverse(ListNode *first){ ListNode *end = NULL; // 要打印结点的后一个结点 while (end != first) { ListNode *cur = first; //...原创 2018-12-18 19:16:17 · 263 阅读 · 0 评论 -
顺序链表的模板化
通过数据结构,学习到了如何在用c语言的方式实现顺序链表,我们可以定义typedef int Detatype,使得我们在更换数据类型时候变得方便。但是我们的顺序链表并不能同时适应多种类型的调试,因此我们可以将顺序链表包装成一个模板,完成这种操作。template<class T>//顺序链表在类里面基本封装完成初始化,增删,判容class SeqList{public:...原创 2018-12-06 14:55:00 · 163 阅读 · 0 评论 -
C++实现字符串的反转
例如:输入“hello" 输出”olleh"关键:在于字符数组\0前面的一个字符作为中点进行反转。 class Solution{ public: string reverseSting(string s) { char* begin =(char*) s.c_str(); char *end =(char*) s.c_str() + s.s...原创 2018-12-09 21:00:04 · 861 阅读 · 0 评论 -
c语言实现折半查找
**搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。#include <stdio.h>int binary_search(int a[],int k, ...原创 2018-12-08 15:57:57 · 334 阅读 · 0 评论 -
c/c++注释风格转换
C注释风格/* hhhfjjjsjd */C++注释风格//huajaijdh //hushushdxkkc转c++可能遇到的问题:1.一般情况/* int i = 0; */ 2.换行问题/* int i = 0; */int j = 0;/* int i = 0; */int j = 0;3.匹配问题/*int i ...原创 2018-11-17 21:58:53 · 188 阅读 · 0 评论 -
数据结构之单链表的相交与环的问题
一、单链表相交不带环如果两个单链表不带环,可以把它们的相交分成以下两种情况: T型、V型T型:这种形式的相交指的是一个单链表的尾(注意:这里只能是尾而不能是头)指向了另一个单链表的中间位置。V型:这种形式的相交,指的是一个单链表的尾指向了另一个单链表的尾。值得注意的是这里只能是被指向单链表的尾,因为如果是被指向单链表的头部,那么两个单链表实际上是一个更大的单链表而已! ...原创 2018-11-20 11:33:54 · 311 阅读 · 0 评论 -
c语言实现链表的(创建、插入、删除、查改.....)
#pragma once#include<stdlib.h>#include<stdio.h>#include<assert.h>//struct node {// int date;// struct node *next;//};typedef int DateType;typedef struct ListNode { DateTyp...原创 2018-09-23 17:43:53 · 1737 阅读 · 0 评论 -
哈希之开散列,闭散列
先从数据查找开始说起吧,在线性结构,树形结构当中查找一个元素必须经过多次和一些元素进行比较,然后通过比较,查找到对应元素,这种方法多多少少,时间复杂度都是比较高的。有没有一种方法时间复杂度,仅仅O(1)尼,那么我们就要构造一种存储结构,通过某种函数是之元素与它对应的关键码之间能建立一一映射的关系,那么自然通过之中一一映射的关系,我们就可以很快的找到我们需要的元素。所以进入哈希这个这题首先我们需...原创 2019-02-22 19:51:43 · 821 阅读 · 0 评论