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 -& ...
随机推荐
- 5_PHP数组_3_数组处理函数及其应用_9_数组集合运算函数
以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 数组集合运算函数 1. array_merge() 函数 程序: <?php $array1 = array ...
- 接口认证:Bearer Token(Token 令牌)
因为HTTP协议是开放的,可以任人调用.所以,如果接口不希望被随意调用,就需要做访问权限的控制,认证是好的用户,才允许调用API. 目前主流的访问权限控制/认证模式有以下几种: 1)Bearer To ...
- GitHub上传文件夹
1.输入自己的用户名和邮箱 为注册GitHub账号时所用的用户名和邮箱;我的用户名为“1997ST2016”,邮箱为“1324971964@qq.com ”. $ git config --globa ...
- Awesome Mac OS Command Line 中文翻译
awesome-macos-command-line 收集了很多有趣的 Mac 终端命令. 看了一遍后,发现帮助很大. 见识许多没有使用过的命令,加深了对 Mac 的认识. 所以翻译成了中文,共享给其 ...
- angular异步获取数据后在ngOnInit中无法获取,显示undefined解决办法
两种方法 1 通过*ngif动态加载要数据渲染的dom 2 通过路由导航resolve 第一种感觉太麻烦了,要是一个页面请求多个接口,那就不得不写多个*ngif,本人还是更倾向与第二种发法 具体步骤: ...
- SIM7600CE http post
SIM7600CE是一款SMT封装的模块,支持 LTE-TDD/LTE-FDD/HSPA+/TD-SCDMA/EVDO和GSM/GPRS/EDGE等频段,支持LTE CAT4(下行速度为150Mbps ...
- HDFS-SecondaryNameNode(SNN)角色介绍
它出现在Hadoop1.x版本中,又称辅助NameNode,在Hadoop2.x以后的版本中此角色消失.如果充当datanode节点的一台机器宕机或者损害,其数据不会丢失,因为备份数据还存在于其他的d ...
- java web编程 servlet读取配置文件参数
新建一个servlet. 然后在web.xml文件里面自动帮助你创建好了<servlet-name><servlet-class><servlet-mapping> ...
- workman 使用心得
1. 服务端调试: 直接在 Events.php 中 echo 变量, 即可在 命令行工具中 看到输出的信息. 以便进行调试. 2. 客户端调试: 由于是js代码, 可以直接 用 conso ...
- RestTemplate的GET与POST
发送GET请求: //设置请求头HttpHeaders headers = new HttpHeaders(); headers.add("token",PostUtils.get ...