学习python过程之了解单链表:

单链表是链表中最简单的一种形式,其每个节点包含2个域,一个信息域(当前节点的元素),一个连接域(指向链表的下一个节点),最后一个节点的链接域指向一个空值None

以下是学习视频后进行练习记录:

参考视频地址:https://www.bilibili.com/video/BV18W411T7Vv?p=15

 

#coding:UTF-8

#定义一个节点,节点存在当前节点的值和指向下一个节点的内存空间
class Node(object):
    def __init__(self,item):
        self.item=item
        self.next=None

#定义一个链表
class LinkListNode(object):
    #定义一个私有变量指向头节点
    def __init__(self,Node=None):
        self.__head=Node

    #链表的操作
    def is_empty(self):
        #链表是否为空
        return self.__head==None
    def length(self):
        #链表长度
        count=0
        cur=self.__head
        while cur!=None:
            count+=1
            cur=cur.next
        return count

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

    def add(self,item):
        #链表头部添加元素
        node=Node(item)
        node.next=self.__head
        self.__head=node
    def append(self,item):
        #链表尾部添加元素
        node=Node(item)
        cur=self.__head
        if cur==None:
            node.next=cur
            self.__head=node
        else:
            while cur.next!=None:
                cur=cur.next
            node.next=cur.next
            cur.next=node

    def insert(self,pop,item):
        #指定位置添加元素
        node=Node(item)
        if pop<=0:
            self.add(item)
        elif pop>(self.length()-1):
            self.append(item)
        else:
            cur=self.__head
            count=0
            while count<pop-1:
                count+=1
                cur=cur.next
            node.next=cur.next
            cur.next=node

    def remove(self,item):
        #删除节点
        pre=None
        cur=self.__head
        while cur!=None:
            #判断链表不为空
            if cur.item==item:
                if cur==self.__head:
                    self.__head=cur.next
                    cur=cur.next
                else:
                    pre.next=cur.next
                    cur=cur.next

                break    #如需循环查找删除相同参数,可将break改为continue
            else:
                pre = cur
                cur = cur.next

    def search(self,item):
        #查找节点是否存在
        cur=self.__head
        while cur!=None:
            if cur.item==item:
                return True
            else:
                cur=cur.next
        return False


if __name__=="__main__":
    ll=LinkListNode()
    print(ll.is_empty())
    print(ll.length())
    ll.append(1)
    print(ll.is_empty())
    print(ll.length())
    ll.append(2)
    ll.append(3)
    ll.add(9)
    ll.append(8)
    ll.travel()
    ll.add(1)
    ll.travel()
    ll.insert(1,6)
    ll.append(1)
    ll.travel()
    ll.remove(1)
    ll.travel()
    print(ll.search(10))

输出:

python如何生成一个超级链接 python怎么创建单链表_python如何生成一个超级链接