用python实现单链表
来源:互联网 发布:飞客数据恢复 编辑:程序博客网 时间:2024/05/17 23:01
#!/usr/bin/env python3
#!-*-encoding:utf-8-*-
#定义一个基于节点类的单链表对象类
class LNode:
#_next防止与python标准函数next重名
def __init__(self,elem,_next=None):
self.elem=elem
self.next=_next
#定义单链表
class LList:
def __init__(self):
#初始化为None表示建立的为空表
def prepend(self,elem):
def pop(self):
if self._head is None: #无节点引发异常
raise LinkedListUnderflow('in pop')
e=self._head.elem
self._head=self.head.next
def append(self,elem):
if self._head is None:
self._head=LNode(elem)
return
p=self._head
while p.next is not None:
p=p.next
p.next=LNode(elem)
#删除最后一个元素
def pop_last(self):
#如果链表为空表
if self._head is None:
raise LinkedListUnderflow('in pop_last')
#如果链表只有一个元素
p=self._head
if p.next is None:
e=p.elem
self._head=None
return e
while p.next.next is not None: #直到p.next是最后一个元素
p=p.next
e=p.next.elem
p.next=none
return p
def find(self,pred):
p=self._head
while p is not None:
if pred(p.elem):
return p.elem
p=p.next
#打印所有的节点元素
def print_all(self):
p=self._head
while p is not None:
print(p.elem)
print('end')
p=p.next
#应用实例:
mlist1=LList()
for i in range(1,10):
mlist1.prepend(i)
for i in range(11,20):
mlist1.append(i)
mlist1.print_all()
#!-*-encoding:utf-8-*-
#定义一个基于节点类的单链表对象类
class LNode:
#_next防止与python标准函数next重名
def __init__(self,elem,_next=None):
self.elem=elem
self.next=_next
#定义单链表
class LList:
def __init__(self):
#初始化为None表示建立的为空表
self._head=None
#判断单链表是否为空
def is_empty(self):return self._head is None
def prepend(self,elem):
self._head=LNode(elem,self._head)
def pop(self):
if self._head is None: #无节点引发异常
raise LinkedListUnderflow('in pop')
e=self._head.elem
self._head=self.head.next
return e
def append(self,elem):
if self._head is None:
self._head=LNode(elem)
return
p=self._head
while p.next is not None:
p=p.next
p.next=LNode(elem)
#删除最后一个元素
def pop_last(self):
#如果链表为空表
if self._head is None:
raise LinkedListUnderflow('in pop_last')
#如果链表只有一个元素
p=self._head
if p.next is None:
e=p.elem
self._head=None
return e
while p.next.next is not None: #直到p.next是最后一个元素
p=p.next
e=p.next.elem
p.next=none
return p
def find(self,pred):
p=self._head
while p is not None:
if pred(p.elem):
return p.elem
p=p.next
#打印所有的节点元素
def print_all(self):
p=self._head
while p is not None:
print(p.elem)
print('end')
p=p.next
#应用实例:
mlist1=LList()
for i in range(1,10):
mlist1.prepend(i)
for i in range(11,20):
mlist1.append(i)
mlist1.print_all()
0 0
- 用python实现单链表
- 单链表反转python实现
- 单链表的Python实现
- 单链表反转python实现
- python 实现单链表
- 用Python实现ORM
- 用Python实现Spy++
- 用Python实现栈
- 用Python实现队列
- 用Python实现Spy++
- 用python实现二项树
- 用Python实现ROT13
- BLAST-用python实现
- 用python实现排列
- 用 python 实现批处理文件
- 用 Python 实现 LDA
- 用python实现数组
- 用Python实现大顶堆
- Nginx源码分析—HTTP框架执行流程
- RuntimeException与CheckedException差异
- PHP中使用foreach和引用导致程序BUG及解决办法
- SQL CONCAT函数
- NDK编译和使用静态库、动态库
- 用python实现单链表
- javascript浏览器对象——History对象
- "Android"性能优化措施之面试必问点-<include>,<merge>,<ViewStub>
- linux && git 命令备忘
- RuntimeException与CheckedException差异
- cisco私有vlan技术
- js判断一个元素是否在数组内
- Java socket
- 大数据天地