python实现单向链表

基于类和对象的方式实现单项链表

class Node:
    '''节点'''
    def __init__(self,elem):
        self.elem = elem
        self.next = None



class SingleLinkList():
    '''单链表'''
    def __init__(self,node=None):
        self.__head = node

    def is_empty(self): #判断链表是否为空
        return self.__head==None

    def length(self):  #链表长度
        curr = self.__head   #游标,用来遍历节点
        count = 0
        while curr != None:
            count += 1
            curr = curr.next
        return count

    def travel(self):  #遍历整个链表
        curr = self.__head
        while curr != None:
            print(curr.elem,end=' ')
            curr = curr.next


    def append(self,item):   #在尾部添加
        node = Node(item)
        if self.is_empty():
            self.__head = node
        else:
            curr = self.__head
            while curr.next != None:
                curr = curr.next
            curr.next = node

    def add(self,item):        #在头部添加 
        curr = self.__head
        node = Node(item)
        node.next = curr
        self.__head = node
    def insert(self,pos,item):      #在指定位置添加
        if pos <= 0:
            self.add(item)
        else:
            node = Node(item)
            curr = self.__head
            i = 1
            while i != pos:
                i+=1
                curr = curr.next
            node.next = curr.next
            curr.next = node


    def remove(self,item):    #删除节点
        curr = self.__head
        if curr.elem == item:
            self.__head = curr.next
        else:
            while item != curr.next.elem:
                curr = curr.next
            curr.next = curr.next.next
    def search(self,item):      #搜索节点
        curr = self.__head
        while item != curr.elem:
            curr = curr.next
            if curr.next == None:
                return False
        else:
            return True
#node = Node(100)
#############################测试###########################################
if __name__ == "__main__":
    ll = SingleLinkList()
    print(ll.is_empty())
    print(ll.length())

    ll.append(1)
    print(ll.length())
    ll.append(2)
    ll.append(3)
    ll.append(4)
    ll.travel()
    print()
    ll.add(0)
    ll.travel()
    print()
    ll.insert(-2,8)
    ll.insert(2,9)
    ll.travel()
    print()
    ll.remove(8)
    ll.travel()

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值