python实现链表
2023-09-27 14:29:16 时间
class Node():
def __init__(self,value=None,next=None):
self._value=value
self._next=next
def getValue(self):
return self._value
def getNext(self):
return self._next
def setValue(self,new_value):
self._value=new_value
def setNext(self,new_next):
self._next=new_next
class LinkedList():
def __init__(self):
self._head=Node()
self._tail=None
self._length=0
def isEmpty(self):
return self._head==None
def add(self,value):
'''
在表前端添加元素
:param value: 添加元素的值
:return:
'''
newnode=Node(value,None)
newnode.setNext(self._head)
self._head=newnode
def append(self,value):
'''
在链表的尾部添加元素
:param value:
:return:
'''
newnode=Node(value)
if self.isEmpty():
self._head=newnode
else:
current=self._head
while current.getNext()!=None:
current=current.getNext()
current.setNext(newnode)
def search(self,value):
'''
查找链表中是否有该元素
:param value: 元素
:return: True or False
'''
current=self._head
while current!=None :
if current.getValue()==value:
return True
else:
current=current.getNext()
return False
def index(self,value):
'''
索引元素在列表中的位置
:param value: 元素的值
:return: 元素在列表中的索引
'''
current=self._head
count=0
while current!=None:
if current.getValue()==value:
return count
else:
count+=1
current=current.getNext()
return ValueError('%s is not in linkedlist'%value)
def remove(self,value):
'''
删除链表第一个值为value的元素
:param value:要删除的元素的值
:return:
'''
current=self._head
pre=None
while current!=None:
if current.getValue()==value:
if not pre:
self._head=current.getNext()
else:
pre.setNext(current.getNext)
break
else:
pre=current
current=current.getNext()
def size(self):
'''
返回数组的长度
:return: 数组的长度
'''
current=self._head
count=0
while current!=None:
count+=1
current=current.getNext()
return count
def insert(self,pos,value):
'''
在指定位置中插入元素
:param pos: 插入位置
:param value:插入的值
:return:None
'''
if pos<=1:
self.add(value)
elif pos>self.size()-1:
self.append(value)
else:
temp=Node(value)
count=1
pre=None
current=self._head
while count<pos:
count+=1
pre=current
current=current.getNext()
pre.setNext(temp)
temp.setNext(current)
相关文章
- python操作Redis集群
- 【华为OD机试真题 python】电信号 【2022 Q4 | 200分】
- Python写代码的用法建议
- 92 python高级 - ==、is
- pyinfo():一个像 phpinfo 一样的 Python 脚本
- 【python】leetcode 141. 环形链表
- 回文链表-python
- 《Python编程快速上手——让繁琐工作自动化》——2.7 控制流语句
- Python数学运算的一个小算法(求一元二次方程的实根)
- python 算术运算符
- Python之文件读取、写入和异常处理操作举例
- python之tkinter使用-消息弹框
- 11、代码的鲁棒性——链表中倒数第k个节点(python版)
- 华为OD机试 - 计算堆栈中的剩余数字(Python) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 寻找链表的中间结点(Python) | 机试题+算法思路+考点+代码解析 【2023】
- 【Leetcode 】21:合并两个有序链表(Python)