Python实现链表

一、链表的基本结构单元定义——Node类的实现


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

    def getData(self):
        return self.data

    def getNext(self):
        return self.next

    def setNext(self, newNext):
        self.next = newNext

二、链表的实现

链表是中每一个节点都通过显示的引用指向下一个节点,只需要知道第一个节点的位置,后面的每一个节点都可以通过引用找到。因此,链表类UnorderedList只需要包含指向第一个节点的引用。

2.1 链表的初始化

empty.png
def __init__(self):
        # head为指向第一个节点的引用,并非一个Node
        self.head = None

2.2 链表添加操作

add.png
 def add(self, item):

        # 顺序不能乱,栓新绳,解旧绳
        temp = Node(item)
        temp.setNext(self.head)
        self.head = temp

2.3 链表的删除操作

remove.png
    def remvove(self, item):
        current = self.head
        previous = None
        found = False
        while not found:
            if current.getData == item:
                found = True
            else:
                previous = current
                current = current.getNext()
        if previous == None:
            self.head = current.getNext()
        else:
            previous.setNext(current.getNext())

\

UnorderedList实现

class UnorderedList:
    def __init__(self):
        # head为指向第一个节点的引用,并非一个Node
        self.head = None

    def isEmpty(self):
        return self.head == None

    def add(self, item):

        # 顺序不能乱,栓新绳,解旧绳
        temp = Node(item)
        temp.setNext(self.head)
        self.head = temp

    def length(self):
        current = self.head
        count = 0
        while current != None:
            count += 1
            current = current.getNext()
        return count

    def search(self, item):
        current = self.head
        found = False
        while current != None and not found:
            if current.getData() == item:
                found = True
            else:
                current = current.getNext()
        return found

    def remvove(self, item):
        current = self.head
        previous = None
        found = False
        while not found:
            if current.getData == item:
                found = True
            else:
                previous = current
                current = current.getNext()
        if previous == None:
            self.head = current.getNext()
        else:
            previous.setNext(current.getNext())
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 用Python玩转数据结构 链表 节点类 根据在前学过的数据结构,那么必须有节点,Python里面没有指针的说法,...
    Yznx_请叫我小哥阅读 537评论 0 0
  • 一、概念梳理 链表是计算机科学里面应用应用最广泛的数据结构之一。它是最简单的数据结构之一,同时也是比较高阶的数据结...
    黑加仑妞阅读 4,139评论 0 0
  • 链表是编程中的一种常用数据结构,具有很强的灵活性。由于python中不存在有指针,这里将使用python中的引用来...
    hitsunbo阅读 15,723评论 1 5
  • 之前在刷算法题的时候,见过很多基础的链表的操作,本着整理一下的想法,在这儿总结一下(PS。每次写都会遇到多多少少的...
    clshinem阅读 1,765评论 4 3
  • 搞懂单链表常见面试题 Hello 继上次的 搞懂基本排序算法,这个一星期,我总结了,我所学习和思考的单链表基础知识...
    醒着的码者阅读 4,640评论 1 45