数据结构- 链表(python)

导读:本篇文章讲解 数据结构- 链表(python),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

链表的基本操作

class Node:  # 节点类
    """
      创建节点信息
    """

    def __init__(self, data):
        self.data = data
        self.next = None


"""
      创建单链表 
      创建单链表 进行操作 
      初始单链表 
      	   1. 判断单链表是否为空 
          如果头节点的指针为空, 则表示为空链表 
      二.  插入元素的操作 【头插法、尾插法】
         1. 插入节点首先开辟空间  生成节点 
         2. 修改指针 
            
"""

class SingleLinklist:
    def __init__(self):
        self._head = None

    def is_empty(self):
        if self._head == None:
            return 1
        else:
            return 0

    def addhead(self, data):
        node = Node(data)
        """
        把下一个头节点的指针给next
        再把Node 的 指针给 head  
        """
        node.next = self._head
        self._head = node

    """
        打印输出
    """

    def printdata(self):
        p = self._head
        while p != None:
            print(p.data, end=" ")
            p = p.next
        print('\n ')

    """
        判断节点是否存在  求表长 
    """

    def length(self):
        p = self._head
        count = 0
        while p != None:
            count = count + 1
            p = p.next
        return count

    """
        查找元素 
        查找元素的时间 
        一直这样找  找到返回True 
        没有找到  则返回 False  
        
    """

    def serachdata(self, data):
        p = self._head
        while p != None:
            if p.data == data:
                return True
            p = p.next

    """
      INSERT在某一位置插入与元素 
        1. 如果在第0个位置插入,选用头插法插入,  
        2. 插入元素大于1 的情况
    """

    def insertdata(self, pos, data):
        """  在第0 个节点进行元素的插入
            不等于空 开始计数

        """
        if pos == 0:
            self.addhead(data)
            return True
        p = self._head
        count = 0
        """
            在查找的过程中 
            1.1如果p != 0  
            1.2 如果计数大于 插入位置
            2.1 如果插入的位置不合法 
             
            p 表示 插入节点的 前一个节点
             
        """
        while p != None:
            count += 1
            if count >= pos:
                node = Node(data)
                node.next = p.next
                p.next = node
                return True
            else:
                p = p.next
        if p == None:
            """ 插入位置是不合法的 """
            return False
        """
            一. 删除头节点的情况 
            二. 删除 进行文件的删除操作 
            
        """

        def removedata(self, data):  # 删除
            p = self._head
            if p.data == data:
                self._head = p.next
            else:
                pre = p
                p = p.next
            while p != None:
                if p.data == data:
                    pre.next = p.next
                    return True
                else:
                    pre = p
                    p = p.next

            if p == None:
                return False

        """
            求最大值 
        """

        def searchmaxdata(self):
            p = self._head
            flag = p.data  # flag = p
            p = p.next
            while p != None:
                if p.data > flag:
                    flag = p.data
                p = p.next


s1 = SingleLinklist()

num = int(input('请输入追加的元素的个数:'))
for i in range(num):
    data = int(input("请输入追加的元素值: "))
    s1.addhead(data)

s1.printdata()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/77029.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!