Python数据结构--双向链表
'''
双向链表包含第一个和最后一个的链接元素。
每个链接都有一个数据字段和两个称为next和prev的链接字段。
每个链接都使用其下一个链接与其下一个链接链接。
每个链接都使用其上一个链接与之前的链接链接。
最后一个链接将链接作为空来标记列表的结尾。
''' # 创建节点
class Node():
def __init__(self, data):
self.data = data
self.next = None
self.prev = None # 创建双链表
class doubly_linked_list():
def __init__(self):
self.head = None # 遍历链表
def listprint(self, node):
while node:
print(node.data)
# last = node
node = node.next # 在头部添加新节点
def push(self, NewVal):
NewNode = Node(NewVal)
NewNode.next = self.head
if self.head:
self.head.prev = NewNode
self.head = NewNode # 在中间任意位置插入节点
def insert(self, prev_node, NewVal):
if prev_node is None:
return
NewNode = Node(NewVal)
NewNode.next = prev_node.next
prev_node.next = NewNode
NewNode.prev = prev_node
if NewNode.next:
NewNode.next.prev = NewNode # 在最后追加节点
def append(self, NewVal):
NewNode = Node(NewVal)
NewNode.next = None
if self.head is None:
NewNode.prev = None
self.head = NewNode
return
last = self.head
while last.next:
last = last.next
last.next = NewNode
NewNode.prev = last
return dllist = doubly_linked_list()
dllist.push(12)
dllist.push(8)
dllist.append(20)
dllist.push(6)
dllist.insert(dllist.head.next, 10)
dllist.append(30)
dllist.listprint(dllist.head) # 结果 6 8 10 12 20 30
# 根据结果可知push是依次加到最前,无论append在什么位置,都是在最后追加
看图理解更容易:https://www.cnblogs.com/Knight-of-Dulcinea/p/9945821.html
03-看图理解数据结构与算法系列(双向链表)
Python数据结构--双向链表的更多相关文章
- python数据结构与算法——链表
具体的数据结构可以参考下面的这两篇博客: python 数据结构之单链表的实现: http://www.cnblogs.com/yupeng/p/3413763.html python 数据结构之双向 ...
- python数据结构与算法
最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...
- python数据结构之图的实现
python数据结构之图的实现,官方有一篇文章介绍,http://www.python.org/doc/essays/graphs.html 下面简要的介绍下: 比如有这么一张图: A -> B ...
- Python数据结构与算法--List和Dictionaries
Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...
- Python数据结构与算法--算法分析
在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...
- Python数据结构与循环语句
# Python数据结构与循环语句: 首先编程是一项技能,类似跑步,期初不必在意细节,能使用起来就行,等学的游刃有余了再回过头来关注细节问题也不迟. 关于买书: 学会python之后,才需要买书 ...
- python数据结构之栈与队列
python数据结构之栈与队列 用list实现堆栈stack 堆栈:后进先出 如何进?用append 如何出?用pop() >>> >>> stack = [3, ...
- python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)
python数据结构之树和二叉树(先序遍历.中序遍历和后序遍历) 树 树是\(n\)(\(n\ge 0\))个结点的有限集.在任意一棵非空树中,有且只有一个根结点. 二叉树是有限个元素的集合,该集合或 ...
- Python数据结构之四——set(集合)
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦.下面将要继续什么呢?让我想想先~~~嗯,还是 ...
随机推荐
- the little schemer 笔记(7)
第七章 Friends and Relations 这是一个set集合吗 (apple peaches apple plum) 不是,apple出现了不止一次 (set? lat) 是真还是假,其中l ...
- 跟我一起玩Win32开发(7):多边形窗口
通常情况下,窗口都是一个矩形,不过,调用下面这个函数,可以自定义窗口的形状. int SetWindowRgn( __in HWND hWnd, __in HRGN hRgn, __in BOO ...
- KMP算法笔记(云笔记图片版)
- 【Helvetic Coding Contest 2018】B2. Maximum Control (medium)
Description 传送门(翻译就别想了,本人英语太垃圾) Solution 设ans[i]为设置i个船时能控制的最多星球数(看到这你可能因为是dp,然而我可以很负责地告诉你是假的) 首先一个显然 ...
- 福建工程学院第七届ACM程序设计新生赛 (同步赛)
A.关电脑 #include<bits/stdc++.h> using namespace std; typedef long long LL; int T,h1,m1,s1,h2,m2, ...
- PT2264解码心得
PT2264解码心得 最近闲暇时间在琢磨无线RF解码程序,正好在数码之家论坛中翻出大佬的解码程序(http://bbs.mydigit.cn/read.php?tid=245739),于是乎,慢慢学习 ...
- 机器学习概念之特征选择(Feature selection)
不多说,直接上干货! .
- 远程访问rhel7的oracle中的问题
客户端得到的错误信息通常是:ORA-12170: TNS:连接超时 这时,我们基本可以肯定是服务器没有开放1521端口(假设你用默认设置) 解决方法: (1)假如你是在一个局域网环境,配置了防火墙.那 ...
- [BZOJ1050][HAOI2006]旅行comf 枚举+并查集
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1050 将边排序,枚举边权最小的边,依次加边直到S和T连通,更新答案. #include&l ...
- fetch和axios区别,proxy代理配置
1.今天使用fetch调用接口时使用console.log(res.data)始终是undefined,使用anxios请求则可以成功请求到数据,非常奇怪,于是查了一圈,才搞明白是我自以为了,哎,浪费 ...