python 链表的实现
code
#!/usr/bin/python
# -*- coding: utf- -*-
class Node(object):
def __init__(self,val,p=):
self.data = val
self.next = p
self.prev = p class LinkList(object):
def __init__(self):
self.head =
def __getitem__(self, key):
if self.is_empty():
print 'linklist is empty.'
return elif key < or key > self.getlength():
print 'the given key is error'
return else:
return self.getitem(key) def __setitem__(self, key, value):
if self.is_empty():
print 'linklist is empty.'
return elif key < or key > self.getlength():
print 'the given key is error'
return else:
self.delete(key)
return self.insert(key) def initlist(self,data):
self.head = Node(data[]) p = self.head for i in data[:]:
node = Node(i)
p.next = node
node.prev = p
p = p.next def getlength(self):
p = self.head
length =
while p!=:
length+=
p = p.next return length def is_empty(self):
if self.getlength() ==:
return True
else:
return False def clear(self):
self.head = def append(self,item):
q = Node(item)
if self.head ==:
self.head = q
else:
p = self.head
while p.next!=:
p = p.next
p.next = q
q.prev = p def getitem(self,index):
if self.is_empty():
print 'Linklist is empty.'
return
j =
p = self.head while p.next!= and j <index:
p = p.next
j+= if j ==index:
return p.data else: print 'target is not exist!' def insert(self,index,item):
if self.is_empty() or index< or index >self.getlength():
print 'Linklist is empty.'
return if index ==:
q = Node(item,self.head) self.head = q p = self.head
post = self.head
j =
while p.next!= and j<index:
post = p
p = p.next
j+= if index ==j:
q = Node(item,p)
post.next = q
q.prev = post
q.next = p
p.prev = q def delete(self,index):
if self.is_empty() or index< or index >self.getlength():
print 'Linklist is empty.'
return if index ==:
q = Node(item,self.head) self.head = q p = self.head
post = self.head
j =
while p.next!= and j<index:
post = p
p = p.next
j+= if index ==j:
post.next = p.next
p.next.prev = post def index(self,value):
if self.is_empty():
print 'Linklist is empty.'
return p = self.head
i =
while p.next!= and not p.data ==value:
p = p.next
i+= if p.data == value:
return i
else:
return - l = LinkList()
l.initlist([,,,,])
print l.getitem()
l.append()
print l.getitem() l.insert(,)
print l.getitem()
print l.getitem()
print l.getitem() l.delete()
print l.getitem() print(l.index())
输出
https://www.jb51.net/article/43559.htm
python 链表的实现的更多相关文章
- Python链表的实现与使用(单向链表与双向链表)
参考[易百教程]用Python实现链表及其功能 """ python链表的基本操作:节点.链表.增删改查 """ import sys cl ...
- Python链表操作(实现)
Python链表操作 在Python开发的面试中,我们经常会遇到关于链表操作的问题.链表作为一个非常经典的无序列表结构,也是一个开发工程师必须掌握的数据结构之一.在本文中,我将针对链表本身的数据结构特 ...
- python 链表表达式 map、filter易读版
链表推导式 [x for x in x] 链表推导式提供了一个创建链表的简单途径,无需使用 map(), filter() 以及 lambda.返回链表的定义通常要比创建这些链表更清晰.每一个链表推导 ...
- Python链表与反链表
# -*- coding:utf8 -*- #/usr/bin/env python class Node(object): def __init__(self, data, pnext = None ...
- python链表的实现
根据Problem Solving with Algorithms and Data Structures using Python 一书用python实现链表 书籍在线网址http://intera ...
- python 链表
在C/C++中,通常采用“指针+结构体”来实现链表:而在Python中,则可以采用“引用+类”来实现链表. 节点类: class Node: def __init__(self, data): sel ...
- python链表的实现,有注释
class Node(): #node实现,每个node分为两部分:一部分含有链表元素,成数据域;另一部分为指针,指向下一个 __slots__=['_item' ...
- python 链表的反转
code #!/usr/bin/python # -*- coding: utf- -*- class ListNode: def __init__(self,x): self.val=x self. ...
- python 链表、堆、栈
简介 很多开发在开发中并没有过多的关注数据结构,当然我也是,因此,我写这篇文章就是想要带大家了解一下这些分别是什么东西. 链表 概念:数据随机存储,并且通过指针表示数据之间的逻辑关系的存储结构. 链表 ...
- Add Two Numbers(from leetcode python 链表)
给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...
随机推荐
- bat批处理删除多少天前的文件
@echo off ::演示:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件. ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除. ::本例需要Win2003/Vist ...
- easy ui 常用控件配置
table comboBox 下拉高度 panelHeight:'auto' textBox
- ping pathping tcping psping tracert
ping pathping tcping psping tracert 1.Ping命令. 当您的机器不能访问Internet,首先确认是否是本地局域网的故障.假定局域网的代理服务器IP地址为202. ...
- java第三次面试总结
这次面试是二面,由于自己的经验不足,面试的结果不是很令人满意,所以与这家公司失之交臂,在这里记录一下经历,吸取教训. 之前的一面是笔试+面试,面试是主管,今天的面试是总监.在前台招待我的时候,还跟我说 ...
- 每周分享五个 PyCharm 使用技巧(四)
文章首发于 微信公众号:Python编程时光 PyCharm 是大多数 Python 开发者的首选 IDE,每天我们都在上面敲着熟悉的代码,写出一个又一个奇妙的功能. 一个每天都在使用的工具,如果能掌 ...
- CMake配置VTK时Qt5_DIR-NOTFOUND的解决方法
直接给解决方法了,不废话. Qt5的路径,请参考:C:\Program\IDE\Qt\Qt5.13.0\5.13.0\msvc2017_64\lib\cmake\Qt5 参考文章 CMake配置VTK ...
- Ldr和bl指令
Ldr和bl在启动程序中,都是可以负责pc跳转的指令. 1)bl是地址无关指令,和什么地址无关呢?和当前的运行地址无关,链接器脚本中标明了一个运行地址,但是arm中的代码实际是从地址0开始运行的.这个 ...
- Spring事务传播机制与隔离机制
详情查看 https://www.jianshu.com/p/249f2cd42692
- IP positioning check position
1.如何找到网上散布不法言论的人的地理位置 比方像微博发布的时候都会自动添加主机网络地址,需要对头文件进行分析 找到IP地址 然后进行反查IP地址的位置 , 如果是可以与要查的终端可以进行通信 ,可以 ...
- linux系统编程之管道(三)
今天继续研究管道的内容,这次主要是研究一下命名管道,以及与之前学过的匿名管道的区别,话不多说,进入正题: 所以说,我们要知道命名管道的作用,可以进行毫无关系的两个进程间进行通讯,这是匿名管道所无法实现 ...