- 博客(9)
- 收藏
- 关注
原创 Python实现循环单链表
循环单链表(Circular single linked list)时单链表的一种简单变形,只需将尾结点rear的next指向头节点head就完成了。与单链表不同的地方在于扫描循环的结束控制。
2021-08-03 10:49:03
807
原创 Python单链表的解析
本文章是我在学完数据结构后再回过头来链表操作的事件复杂度:创建空链表:O(1)删除表:在Python里是O(1).当然,Python解释器做存储管理也需要时间判断空表:O(1)首端加入(或删除)元素:O(1)尾端加入(或删除)元素:O(n)定位加入(或删除)元素:O(n),平均或最坏的情况其它删除元素:O(n),通常需要扫描整个表或者表的一部分单链表的基本操作ADT Single Linked List 单链表的抽象数据类型 is_empty(self) .
2021-08-01 16:16:19
624
原创 Python实现二叉树的深度优先遍历和广度优先遍历
二叉树的遍历分为深度优先遍历和广度优先遍历 。 深度优先遍历顾名思义是从树的一条分支走到底才进行回溯,深度优先遍历又分为前序遍历,中序遍历和后序遍历。 一棵二叉树由根结点、左子树和右子树三部分组成,若规定 D、L、R 分别代表遍历根结点、遍历左子树、遍历右子树。DLR--前序遍历(根在前,从左往右,一棵树的根永远在左子树前面,左子树又永远在右子树前面)LDR--中序遍历(根在中,从左往右,一棵树的左子树永远在根前面,根永远在右子树前面)...
2021-06-30 23:18:43
1033
3
原创 栈和队列(4)(用链表实现队列)
在一开始写用链表实现队列的时候,当时很蠢,没想到使用链表的变形来进行操作,所以写的程序效率非常低,后来就去学了以下单链表的变形。在用链表实现队列的时候由于是一端入队,另一端出队的操作,并且链表的首端尾front,后端尾rear,在进行入队操作的时候需要不断的链表的尾端插入数据,如果使用传统的单链表的方法来写,每一次入队的时间复杂度的都是O(n),效率太低,此时,如果稍稍修改一下,添加一个尾结点域,就是添加一个指向:头结点始终指向尾结点,此时,每次进行入队操作的时间复杂度就变成了O(1),大大...
2021-06-28 22:09:01
211
原创 栈和队列(3)(列表实现队列)
不管是用列表实现队列还是用列表来实现栈都是很简单的操作,只需要注意一些细节,再调用python自带的函数就可以完成实现。 队列是先进先出FIFO结果,类似于现实社会中的排队,先到先得,一端入队另一端出队下面是用列表实现队列不限制长度的代码实现:# author HeiJack# Time 2021-6-28# list实现queue# 不限制队的长度# 列表前端为front,后端为rearclass LQueue: de...
2021-06-28 21:57:20
216
原创 栈和队列(2)(链表实现栈)
其实我认为用列表实现栈是最简单的,只需要简单的调用python自带的list函数就可以实现操作在用链表实现栈的时候选择好栈底很重要,由于栈的操作都是在同一端进行压栈和出栈操作,如果选择链表的尾端作为栈底,每一次压栈和出栈的时间复杂度都是O(n),但是选择链表的首端作为栈底的话,每一次压栈的出栈的事件复杂度都是O(1),大大提高了程序的运行效率。链表实现栈不限制长度的代码:# author HeiJack# Time 2021-6-28# 栈的链表实现# 不设置
2021-06-28 21:43:56
101
原创 栈和队列(1)(用列表实现栈)
在之前学习树的遍历时,我发现我不会用链表实现队列,再加上之前学习栈和队列的时候我只认真的学习了栈,而队列只是简单的看了看,现在回过头来重新学一下 我也不知道我时怎么想的我写了栈和队列分别用链表和队列实现,又分为限制长度和不限制长度,一共就写了8个,太长了,所以就分为四篇文章给出,每篇文章都是一种方法分为有限制长度和没有限制长度。其实我感觉用python来写有限制长度栈和队列就是多此一举,我也不知道我为什么要写,就当好玩了。 这是第一篇,用列表实现栈不限制长...
2021-06-28 20:20:46
198
原创 设置尾结点域的单链表
本人是一个菜鸟,希望通过写写博客的方式来记录我在学习上遇到的一些困难,并以此来督促自己投入到学习中来。 之几天一直在研究栈和队列,在写用链表实现队列的时候要频繁的使用入队操作,我发现我并不会在尾结点出设置尾结点域,所以就回过头来看了看单链表的变形。 在尾结点处设置尾结点域需要设置两个变量,一个是头结点另一个当然就是尾结点,在写程序的过程中需要不断的维护这两个变量,其实设置尾结点域并不是特别难只需要在单链表的基础上进行一些变动就可以完成。 ...
2021-06-28 13:42:37
505
原创 快速排序Python代码实现
快速排序(Quick Sort)是通过分治的思想来进行排序,它的主要思想是:取数组中的一个数作为基准值(往往取数组中的第一个数),把所有小于基准值的数都放在它的一侧,再把所有大于基准值的数都放在它的you'ce...
2021-06-16 16:24:40
7186
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人