python

超轻量级php框架startmvc

python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】

更新时间:2020-08-04 10:24:01 作者:startmvc
本文实例讲述了python单向链表的基本实现与使用方法。分享给大家供大家参考,具体如下:

本文实例讲述了python单向链表的基本实现与使用方法。分享给大家供大家参考,具体如下:


# -*- coding:utf-8 -*-
#! python3
class Node():
 def __init__(self,item):
 #初始化这个节点,值和下一个指向
 self.item = item
 self.next = None
class SingleLinklist():
 def __init__(self):
 #初始化这个单链表的头指针为空
 self._head = None
 def length(self):
 #获取这个链表的长度
 count = 0
 cur = self._head
 while cur != None:
 count+=1
 cur = cur.next
 return count
 def is_empty(self):
 """判断是否为空"""
 return self._head == None
 def add(self,item):
 """在头部添加元素"""
 node = Node(item)
 node.next = self._head
 self._head = node
 def append(self,item):
 """在尾部添加元素"""
 cur = self._head
 node = Node(item)
 while cur != None:
 cur = cur.next
 cur.next = node
 def insert(self,pos,item):
 """在选定的位置添加元素"""
 cur = self._head
 node = Node(item)
 count = 0
 if pos <= 0:
 self.add(item)
 elif pos > (self.length()-1):
 self.append(item)
 else:
 while count < (pos -1):
 count+=1
 cur = cur.next
 node.next = cur.next
 cur.next = node
 def travel(self):
 """遍历整个链表"""
 cur = self._head
 while cur != None:
 print(cur.item,end=" ")
 cur = cur.next
 print(" ")
 def remove(self,item):
 """删除链表"""
 cur = self._head
 pre =None
 while cur != None:
 if cur.item == item:
 if not pre:
 self._head = cur.next
 break
 else:
 pre.next = cur.next
 else:
 pre = cur #
 cur = cur.next
 def search(self,item):
 """查找某个节点"""
 cur = self._head
 while cur != None:
 if cur.item == item:
 print("找到这个元素了")
 return True
 cur = cur.next
 print("抱歉没有这个元素")
 return False
singlistdemo = SingleLinklist()
singlistdemo.add(1)
singlistdemo.add(2)
singlistdemo.add(65)
singlistdemo.insert(2,77)
singlistdemo.insert(1,66)
singlistdemo.insert(0,66)
print(singlistdemo.length())
singlistdemo.travel()
singlistdemo.remove(1)
singlistdemo.travel()
singlistdemo.search(65)

运行结果:

6 66 65 66 2 77 1