Python链表

class Node:
    def __init__(self,dataval=None):
        self.dataval=dataval
        self.nextval=None


class SLinkList:
    def __init__(self):
        self.headval=None

    # 遍历列表
    def traversal_slist(self):
        head_node=self.headval
        while head_node is not None:
            print(head_node.dataval)

            head_node=head_node.nextval


#     表头插入结点
    def head_insert(self,newdata):
        Newdata=Node(newdata)
        Newdata.nextval=self.headval
        self.headval=Newdata

    # 表尾插入结点
    def tail_insert(self,newdata):
        Newdata=Node(newdata)

        if self.headval is None:
            self.headval=Newdata
            return
        head_node = self.headval
        while head_node.nextval :
            head_node=head_node.nextval
        head_node.nextval=Newdata

#     在两个数据结点之间插入
    def middle_insert(self,middle_node,newdata):
        Newdata=Node(newdata)
        if middle_node is None:
            return
        Newdata.nextval=middle_node.nextval
        middle_node.nextval=Newdata

#     删除结点
    def remove_node(self,newdata):
        head_node=self.headval
        if head_node==None:
            return
        if head_node.dataval == newdata:
            self.headval = head_node.nextval
            head_node = None
            return
        while head_node is not None:
            prev=head_node
            head_node=head_node.nextval
            if head_node:
                if head_node.dataval==newdata:
                    prev.nextval=head_node.nextval
                    
                    
lis=SLinkList()
lis.headval=Node('aa')
ee=Node('bb')
lis.headval.nextval=ee

lis.head_insert('cc')
lis.tail_insert('dd')
lis.middle_insert(ee,"Fri")
lis.remove_node('bb')

lis.traversal_slist()

 

posted on 2020-08-31 14:27  HHMLXL  阅读(142)  评论(0)    收藏  举报

导航