![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
William_Tao(攻城狮)
学无止境,学有所成,学有所获,不断努力
展开
-
Java实现双链表
之前用c,python实现过,但是经过一段时间的不接触,让我忘记了循环链表是个啥,因此通过java来实现,让我又有了新的了解,下次再写估计就能够深入的了解链表了说明1 在写链表的时候,一定要记住要有头节点,头节点是一切,同时还要有个能够测量长度的size,2.在写删除,添加操作时,一定要定义一个新的节点来定位到头节点,这样才能够进行操作,不信你在纸上试一试没有新的节点,你怎么去操作把;3...原创 2020-02-29 17:43:49 · 290 阅读 · 0 评论 -
java实现二叉树,前,中,后序递归以及非递归遍历以及查询二叉树(Java)
树的一些基本知识点:链接:https://pan.baidu.com/s/1g6ZxO_o44LUyW3fl-3Ve6g提取码:k5dx二叉树以及哈夫曼知识点:链接:https://pan.baidu.com/s/1IjwG5BYStf2KC06FpXq4tw提取码:omm2二叉树的构建:package com.dn.binarytree;import java.awt.List...原创 2020-02-10 22:19:39 · 317 阅读 · 0 评论 -
python实现快速排序
python实现快速排序快速排序定义:过程分析:我们还是用为例子,__[54,26,93,17,77,31,44,55,20]__为例子:依据:根据快速排序原理知道,先找到一个元素,然后划分成左边比规定元素小,右边比规定元素大的目的首先low指向第一个元素,high指向最后一个元素,我们先以54(alist[0])为划分元素(1)首先我们判断high指针指向的元素,20比54要小所...原创 2019-08-13 10:42:37 · 280 阅读 · 0 评论 -
二叉树的镜像实现(python版)
题目:操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5代码:#定义数节点结构class TreeNode: def __init__(self, ...原创 2019-08-16 21:58:24 · 1040 阅读 · 0 评论 -
python实现希尔排序
python实现希尔排序希尔排序:实现分析:实际上希尔排序就是对插入排序的一种改进而已,希尔排序是将整个列表当成一个无序序列,并将其分成多个无序序列来进行插入排序,而实现分成多个序列就是需要一个gap步长来实现,对于普通的插入排序gap就是等于1。我们还是以 __[54,26,93,17,77,31,44,55,20]__为例子。为了分析,我们假设gap先等于2,图一是我们未划分之...原创 2019-08-12 10:48:12 · 404 阅读 · 0 评论 -
常见排序算法的复杂度
常见排序算法的复杂度原创 2019-08-12 10:13:29 · 206 阅读 · 0 评论 -
python实现归并排序
python实现归并排序归并排序:思路分析:(1)归并排序就是先进行分解操作,再进行合并操作(2)当分解到最小以后,就进行合并,合并的同时比较两两数组之间的大小将其排序好(3)这样的分解时需要用递归来实现的。(4)如果排序元素是奇数个,辣么对于最后一个数字的处理。代码实现:def merge_sort(alist): """归并排序""" n=len(alist)...原创 2019-08-15 17:05:48 · 346 阅读 · 0 评论 -
python实现插入排序
python实现插入排序插入排序:分析:我们假设第一个元素作为有序的一个序列,然后我们拿后面的元素与其有序序列进行对比,如果后者比前者小,那么我们就把元素插入到有序序列当中,以[54,26,93,17,77,31,44,55,20]为例子。【54】作为有序序列,26比54小,那么插入到序列当中并且称为另一个有序序列【26,54】,然后比较93与有序序列当中的54比较,【26,54,93...原创 2019-08-11 21:32:41 · 565 阅读 · 0 评论 -
python实现选择排序
python实现选择排序选择排序:实现原理:我们以 【 54 226 93 17 77 31 44 55 20】为例子【54 226 93 17 77 31 44 55 20】那么首先我们认为第一个元素为最小元素,然后从列表中找到最小元素,并与第一个元素替换,【54 226 93 17 77 31 44 55 20】【17 ,226, 93 ,54 ,77 ,31, 44, 55...原创 2019-08-11 11:07:12 · 325 阅读 · 0 评论 -
python实现冒泡排序
python实现冒泡排序冒泡排序(从小到大排序):冒泡排序的思路为拿第一个数与后面的数一一对比,如果前一个数比后一个数大那么将位置互换,这一经过一次可以使得最大的元素置于最后如图排序数为:54 26 93 17 77 31 44 55 20如图所示,经过一次排序以后93跑到了最后一个位置,经过八次这样的循环便可得到排序后的数字def BubleSort(alist): n=len(a...原创 2019-08-10 23:26:17 · 314 阅读 · 0 评论 -
pyton实现二分查找
pyton实现二分查找搜索:二分查找:递归代码:def binary_search(alist,item): """二分查找""" low=0 n=len(alist) if n>0:#递归终止条件 mid=n//2 if item==alist[mid]: return True ...原创 2019-08-14 21:34:16 · 413 阅读 · 0 评论 -
补充:python实现二叉树里面求叶子节点的算法
python实现二叉树里面求叶子节点的算法叶子节点概念:一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称“叶子”。 叶子是指度为0的结点,又称为终端结点。图形:这个二叉树有五个叶子节点,分别为7,8,9,5,6.实现: def leaf(self,root): if root==None: return 0 #当二叉树为空时直接返...原创 2019-08-07 17:01:07 · 4671 阅读 · 0 评论 -
python实现双向链表
python实现双向链表双向链表:在单链表的节点中只有一个指向其后继节点的指针域next,因此若已知某节点的指针为p,其后继节点的指针为p->next,而找其前驱节点则只能从该链表的头指针开始顺着各节点的next域进行,也就是说找后记的时间性能是O(1),找前驱的节点为O(n),如果也希望找到前驱的时间性能是O(1),则可以通过付出空间为代价,每一个节点再加一个指向前驱的指针域。因此这就...原创 2019-08-06 21:27:15 · 352 阅读 · 0 评论 -
Python3实现循环链表
循环链表一、概要:循环链表是相对于单链表而言的一种特殊情况,就是将最后一个节点的next域赋值给头结点(图一为单链表,图二为循环链表)级循环链表与单链表的比较循环链表的特点是无须增加存储量,仅对表的链接方式稍作改变,即可使得表处理更加方便灵活。①循环链表中没有None域。涉及遍历操作时,其终止条件就不再是像非循环链表那样判别p或p->next是否为None,而是判别它们是否等于某一指定指...原创 2019-07-23 09:17:15 · 827 阅读 · 0 评论 -
python实现二叉树
python实现二叉树二叉树的简介实现的方法实现的代码class Node(object): def __init__(self,item): self.item=item self.left=None self.right=Noneclass Tree(object): def __init__(self): ...原创 2019-08-04 21:33:38 · 5104 阅读 · 3 评论 -
python3实现链表的基础操作
python3实现链表的基础操作实现的步骤:一、建立链表模型二、遍 历 链 表三、获取链表长度四、追 加 节 点五、插 入 操 作六、主 调 函 数分析:(1)建立链表模型:首先我们节点的概念如图中的单个方块(代码实现):class linkNode(): """ 链表节点类 """ def __init__(s...原创 2019-07-20 23:17:28 · 7737 阅读 · 0 评论 -
Python3实现栈操作
Python3实现栈操作简介栈栈是限制在表的一端进行插入和删除的线性表。允许插入,删除的这一端称为栈顶,另一端固定端称为栈底。当表内无元素时称为空栈。实现栈的功能:一、判断栈是否为空class Stack(): def __init__(self): self.stack=[]#构建一个空栈 def is_empty(self): ret...原创 2019-07-23 21:20:26 · 2141 阅读 · 0 评论