python数据结构与算法:双向链表
双向链表:
###################### P4.13-P4. 双向链表 ###########################
# import singlelinkListclass Node(object):def __init__(self,item):self.elem = itemself.next = Noneself.prev = None# class DoublelinkList(singlelinkList): #继承
class DoublelinkList(object):def __init__(self, node = None):self.__head = nodedef is_empty(self):return self.__head is Nonedef travel(self):cur = self.__headwhile cur.next != None:print(cur.elem, end=" ")cur= cur.nextprint("")def length(self):"""length of list 遍历 借助 Cursor 指针或者游标计数"""cur = self.__headcount = 0while cur != None:# cur.next = Nonecount+=1cur = cur.nextreturn countdef add(self, item):node = Node(item)node.next = self.__headself.__head = nodenode.next.prev = nodedef append(self, item):node = Node(item) # node 实例化if self.is_empty():self._head = nodeelse:cur = self.__headwhile cur.next != None:cur = cur.nextcur.next = nodenode.prev = curdef insert(self, pos, item):""":param pos 从0 开始 """if pos < 0:self.add(item)elif pos > (self.length() - 1):self.append(item)else:cur = self.__headcount =0while (count < pos):count += 1cur = cur.nextnode = Node(item)node.next = curnode.prev = cur.prevcur.prev = nodecur.prev.next = nodedef remove(self, item):cur = self.__headwhile cur != None:if cur.elem == item:if cur == self.__head:self.__head = cur.nextif cur.next:cur.next.prev = Noneelse:cur.prev.next = cur.nextif cur.next:cur.next.prev = cur.prevbreakelse:pre = curcur = cur.nextdef search(self, item):cur = self.__headwhile cur != None:if cur.elem == item:return Trueelse:cur = cur.nextreturn Falseif __name__ =="__main__":ll = DoublelinkList()print(ll.is_empty())print(ll.length())ll.append(1)print(ll.is_empty())print(ll.length())ll.append(2)# ll.add(8)ll.append(3)ll.append(4)ll.append(5)ll.append(6)ll.insert(-1, 9)ll.insert(3, 100)ll.insert(8, 1234)ll.travel()
### 9 8 1 3 119 1 3 1234ll.remove(1234)ll.travel()
相关文章:

如何开发一个区块链应用程序
区块链是一项巧妙的发明,有望使数字世界更加安全和分散。通过允许数字信息的分发而不是复制,区块链技术创建了一种新型互联网。最初是为数字货币比特币而设计的,现在科技界正在寻找该技术的其他潜在用途。在不久的将来,我们将看到…

python数据结构与算法:栈
栈: Stack() 创建一个新的空栈 push(item) 添加一个新的元素item到栈顶 pop() 弹出栈顶元素 peek() 返回栈顶元素 is_empty() 判断栈是否为空 size() 返回栈的元素个数 Stack() 创建一个新的空栈 push(item) 添加一个新的元素item到栈顶 pop() 弹出栈顶元素 peek(…

【PAT (Basic Level) 】1014 福尔摩斯的约会 (20 分)
大侦探福尔摩斯接到一张奇怪的字条: 我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的…

菜鸟物流云是如何帮助快递合作伙伴解决双11巨大业务负荷的?
物流云双11 双11前,菜鸟物流云共接入12家合作伙伴,全部参加双11大促活动,作为物流云的首次双11,尤其是经过了快递公司的大考经验,事实证明项目是靠谱的。 双11前已经整体上云的快递合作伙伴2家,韵达和天天&…

安装H3C的各种问题
HCL安装完成后,启动HCL失败;提示:“当前系统用户名中包含非ASCII字符”问题?HCL只能安装装在英文路径下,如果用户名为中文或者安装路径有中文目录,就会出现此问题,请确保系统用户名和安装路径中…

前景背景分割——ostu算法的原理及实现 OpenCV (八)
OpenCV 【八】——前景背景分割——ostu算法的原理及实现 实验结果代码实现实现原理参考资料实验结果 代码实现 #include<opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; //计算图像灰度直方图 Mat calcgrayhist(const Mat&am…

【PAT (Basic Level) 】1015 德才论 (25 分)
宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人࿰…

浏览器启动外部软件
常可以看见使用浏览器代码启动本地应用的软件.例如qq、迅雷、等等.那么他们是怎么做到的呢? 它的奥秘:Register protocol 前言我们经常看到 tencent://..thunder://这两种开头的网址,往往觉得很奇怪,很想弄懂其中的原理,是如何实现的&#x…

Luogu P1082 同余方程(NOIP 2012) 题解报告
题目传送门 【题目大意】 求关于x的同余方程 ax≡1(mod b)的最小整数解。 【思路分析】 由同余方程的有关知识可得,ax≡1(mod b)可以化为axby1,此方程有解当且仅当gcd(a,b)1,于是就可以用欧几里得算法求出一组特解x0,y0。 那么x0就…

MATLAB【二】————图像做减法,批量文本处理,子图显示
clear; clc; close all;name_string ["1.5ms\100\" ];length strlength(name_string); [m,n] size(length);%%----------------------------- for num1:mstr name_string(num,1); figure(color, [1, 1, 1], position, [0, 0, 1800,800]); % 为区分边界&a…

与数据有关的问题
◆ 背景说明 在为用户排查问题,解决问题时,有一种情况是不容易引起大家注意的,那就是用户的数据;比如,数据中有某些特殊字符,引起展现不了或展现不正常;现在ÿ…

【PAT (Basic Level) 】1024 科学计数法 (20 分)
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [][1-9].[0-9]E[][0-9],即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。 现以科学计数法…

jsp 实栗 jsp + jdbc 登录
jsp 实栗 jsp jdbc 实现登录 实现思路 一个表单页,输入用户登录和密码,然后信息提交到jsp页面进行验证,如果可以服务器跳转到登录成功页,失败,跳转到错误页 跳转的时候窗口的URL地址会发生变化 代码如下 编写登录代码…

OpenCV 【十】——Gamma校正 ——图像灰度变化
Gamma校正(C、OpenCV实现) 1.作用: Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系: 伽玛校正由以下幂律表达式定义: 2.函数原型 void calcHist( const Mat*…

Linux磁盘阵列技术详解(二)--raid 1创建
我在Linux磁盘阵列技术详解(一)里已经详细介绍了几种RAID磁盘阵列方式,原理以及创建raid 0 的详细步骤。那么这篇文档就着重讲解如何创建raid 1的技术:步骤如下:① 分区同样我们还是以一块硬盘的不同分区为例ÿ…
【PAT (Basic Level) 】1025 反转链表 (25 分)
给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转。例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4;如果 K 为 4,则输出应该为 4→3→2→1→5→6,即…

C#关于窗体的传值
关于窗体之间的传值我在《编程技巧与维护》杂志上写过总结文章,比较久远了。 开始的时候,用下面的方法传递,程序运行正常。 Form1 f1 this.Owner as Form1; //Form1 f1 (Form1)this.Owner;(这样写也可以) …

MATLAB【四】 ————批量适配图片信息与excel/txt等文档信息,批量移动拷贝图片,批量存图片中点和方框
1、批量读取图片,批量读取文件 2、适配文件与excel、txt等文档信息 3、获取显示图片ROI、Point、rect、更改像素值 4、批量移动拷贝图片,批量显示 5、保存显示图片或者图片中的点和方框。 clear; clc; close all;%% crop the im into 256*256 num 0…

mysql日志文件相关的配置【2】
1、二进制日志是什么? mysql 的二进制日志用于记录数据库上做的变更、 2、二进制日志什么时间写到磁盘 1、总的来说二进制日志会在释放锁之前就写入磁盘、也就是说在commit完成之前;client还没发送commit这个时候mysql并不把binlog写入磁盘、 别一方面my…

【PAT (Basic Level) 】1028 人口普查 (20 分)
某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以…

SW6206超级华为快充5V5A,全协议OPPO闪充、自带电量计量、LED 灯/数码管显示
深圳市展嵘电子有限公司有需要的上帝可联系小陈:136-6225-3950 : 3412-1522-98SW6206 是一款高集成度的多协议双向快充移动电源专用多合一芯片,支持AABCL 口任意口快充。其集成了5A高效率开关充电,20W高效率同步升压输出,PPS/PD/Q…

bash脚本【一】——批量处理文件
Bash脚本2.0 #!/bin/bashoutput_root_dir"0723weixin" data_root_dir"D:/data/"$output_root_dir config_dir"config"# speckle_name"SPEACKLEIMAGE.bmp" # ir_name"IRIMAGE.bmp" # rgb_name"RGBIMAGE.jpg" # co…

【PAT (Basic Level) 】1030 完美数列 (25 分)
给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。 【输入格式】&…

运营商劫持处理
测试URL:因近期发现长宽资源经常出现被劫持和转发错误的现象。解决办法如下:1、把转发列表写到named.conf文件里,更新我们的转发ip2、然后编写策略针对我们要去的域名从BGP出口出去,防止NAT。x.x.x.x.com,(…

oracle维护数据的完整性
转自:https://www.cnblogs.com/roger112/p/7722376.html 介绍: 数据的完整性用于确保数据库数据遵从一定的商业的逻辑规则。在oracle中,数据完整性可以使用约束、触发器、应用程序(过程、函数)三种方法来实现,在这三种方法中&…

MATLAB【五】———— matlab 调用C++生成exe文件,高斯核函数
两种方式调用C生成的exe文件, 语法: status system(command) [status,cmdout] system(command) [status,cmdout] system(command,-echo) 说明 status system(command) 调用操作系统执行指定的命令。操作会等待命令执行完毕,然后再将命令…

REACT day 1
https://facebook.github.io/react/ A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES Declarative views make your code more predictable and easier to debug. React是Facebook在2013年发布的一个前端框架,而如今的React俨然已经演变成一个前端生态ÿ…

win10+Chrome浏览器截长图方法
本方法亲测可行,操作系统为win10,其他操作系统没有试过。 部分内容基于https://blog.csdn.net/ianly123/article/details/80565614并进行修正。 打开 Chrome 浏览器,进入需要截图的网站页面。打开开发者工具:在页面任何地方点击…

如何打造一流的视觉AI技术
本次分享主要分以下几个部分:首先简要介绍一下计算机视觉技术的相关背景,然后结合格灵深瞳的实践,从算法研发、训练平台、智能数据处理、异构计算等几个方面着重介绍如何打造一流的视觉AI技术,最后介绍格灵深瞳在相关技术落地方面…

MATLAB【六】 ———— matlab 随机散斑模拟
%% %input for image size(NX,NY) <散斑图大小(像素)> NX 1280; NY 800; %input for numble of speckles(S)<散斑数量> S 9226; %输入的散斑大小 a 4; %input for peak intensity of each speckle(I0)<散斑峰值强度> I0 1; %input …