python链表的操作_python实现单向链表及常用操作

# -*- coding: utf-8 -*-

"""

Created on Thu Feb 28 16:44:36 2019

@author: CommissarMa

"""

class ListNode():

"""

结点类

"""

def __init__(self,value):

self.value=value#值

self.next=None#指向下一个结点的引用

class LinkedList():

"""

链表类(单向)

"""

def __init__(self):

self.headNode=None

self.tailNode=None

def add(self,value):

"""

在链表尾部添加结点

"""

if self.headNode==None:#第一次添加元素

listNode=ListNode(value)

self.headNode=listNode

self.tailNode=listNode

else:

listNode=ListNode(value)

self.tailNode.next=listNode

self.tailNode=self.tailNode.next

def delete(self,value):

"""

删除链表中第一次出现这个值的结点

"""

if self.headNode.value==value:#头节点就是该值的话,直接删除

if self.headNode==self.tailNode:

self.headNode=self.tailNode=self.headNode.next

else:

self.headNode=self.headNode.next

else:

node_preview=self.headNode

node=self.headNode.next

while node!=None:

if node.value==value:

node_preview.next=node.next

break

else:

node_preview=node

node=node.next

def find(self,value):

"""

查询在链表中是否存在该值,存在返回对应的结点,不存在返回None

"""

node=self.headNode

while node!=None:

if node.value==value:

return node

else:

node=node.next

return None

def print_list(self):

"""

打印链表中所有结点的值

"""

node=self.headNode

while node!=None:

print(node.value)

node=node.next

def print_list_reversely(self):

"""

逆序打印链表

"""

self.__print_list_reversely(self.headNode)

def __print_list_reversely(self,node):

"""

逆序打印链表

"""

if node!=None:

self.__print_list_reversely(node.next)

print(node.value)

if __name__=="__main__":

linkedList=LinkedList()#新建空链表

linkedList.add(1)

linkedList.add(2)

linkedList.add(3)

linkedList.add(4)

linkedList.add(5)

linkedList.add(6)

linkedList.delete(3)

linkedList.print_list()

print(linkedList.find(7))

linkedList.print_list_reversely()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值