未加星标

Python数据结构之单链表详解

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二03 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

本文实例为大家分享了python数据结构之单链表的具体代码,供大家参考,具体内容如下

# 节点类
class Node():
__slots__=['_item','_next'] # 限定Node实例的属性
def __init__(self,item):
self._item = item
self._next = None # Node的指针部分默认指向None
def getItem(self):
return self._item
def getNext(self):
return self._next
def setItem(self,newitem):
self._item = newitem
def setNext(self,newnext):
self._next=newnext
# 单链表
class SingleLinkedList():
def __init__(self):
self._head = None #初始化链表为空 始终指向链表的头部
self._size = 0 # 链表大小
# 返回链表的大小
def size(self):
current = self._head
count = 0
while current != None:
count += 1
current = current.getNext()
return count
# 遍历链表
def travel(self):
current = self._head
while current != None:
print(current.getItem())
current = current.getNext()
# 检查链表是否为空
def isEmpty(self):
return self._head == None
# 在链表前端添加元素
def add(self,item):
temp = Node(item) # 创建新的节点
temp.setNext(self._head) # 新创建的next指针指向_head
self._head = temp # _head指向新创建的指针
# 在链表尾部添加元素
def append(self,item):
temp = Node(item)
if self.isEmpty():
self._head = temp # 若为空表就直接插入
else:
current = self._head
while current.getNext() != None:
current = current.getNext() # 遍历列表
current.setNext(temp) # 此时current为链表最后的元素,在末尾插入
# 检索元素是否在链表中
def search(self,item):
current = self._head
founditem = False
while current != None and not founditem:
if current.getItem() == item:
founditem = True
else:
current = current.getNext()
return founditem
# 索引元素在表中的位置
def index(self,item):
current = self._head
count = 0
found = None
while current != None and not found:
count += 1
if current.getItem() == item:
found = True
else:
current = current.getNext()
if found:
return count
else:
return -1 # 返回-1表示不存在
# 删除表中的某项元素
def remove(self,item):
current = self._head
pre = None
while current!=None:
if current.getItem() == item:
if not pre:
self._head = current.getNext()
else:
pre.setNext(current.getNext())
break
else:
pre = current
current = current.getNext()
# 在链表任意位置插入元素
def insert(self,pos,item):
if pos <= 1:
self.add(item)
elif pos > self.size():
self.append(item)
else:
temp = Node(item)
count = 1
pre = None
current = self._head
while count < pos:
count += 1
pre = current
current = current.getNext()
pre.setNext(temp)
temp.setNext(current)
if __name__=='__main__':
a=SingleLinkedList()
for i in range(1,10):
a.append(i)
print('链表的大小',a.size())
a.travel()
print(a.search(6))
print(a.index(5))
a.remove(4)
a.travel()
a.insert(4,100)
a.travel()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

主题: 数据结构数据Python删除
tags: self,current,def,head,None,getNext,链表,temp,count,pre,while,return,else
分页:12
转载请注明
本文标题:Python数据结构之单链表详解
本站链接:http://www.codesec.net/view/565148.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(30)