单向链表 用Python 进行描述

2019-07-23  本文已影响0人  机智的柠檬

单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域,用来存储数据,一个是链接域,这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。


image.png
节点实现:
class Node(object):
    def __init__(self,elem):
        self.elem = elem
        self.next = None
单链表的操作:
单链表的实现
class SingleLinkList(object):
    def __init__():
        self.__head = None
    def is_empty(self):
        return self.__head == None
    def length(self):
        cur = self.__head
        count = 0
        while cur != None:
            count += 1
            cur = cur.next
        return count
    def travel():
        cur = self.__head
        while cur != None:
            print(cur.elem,end = " ")
            cur = cur.next
头部添加元素
image.png
def add(item):
    node = Node(item):
    node.next = self.__head
    self.__head = node 

尾部添加元素

def append(item)
    node = Node(item)
    cur = self.__head
    if self.is__empty():
        self.__head = node
    else:
        while cur != None:
            cur = cur.next
        cur.next = node
指定位置添加元素
image.png
def insert(self, pos, item):
    if pos <= 0:
        self.add(item)
    elif pos >= self.length():
        self.append(item)
    else:
        node = Node(item)
        pre = self.__head
        count = 0 
        while count < (pos-1):
            count += 1
            pre = pre.next
        node.next = pre.next
        pre.next = node 
删除节点
image.png
def remove(item):
    cur = self.__head
    pre = None
    while cur != None:
        if cur.elem == item:
            if cur == self.__head:       
                self.__head = cur.next
            else:
                pre.next = cur.next
            #当删除之后要结束当前循环
            break
        else:
            pre = cur 
            cur = cur.next
   
def search(item):
    cur = self.__head
    while cur != None:    
        if cur.elem == item:
            return True
        else:
            cur = cur.next
    return False 
链表与顺序表的对比

链表与顺序表的各种操作复杂度对比:


image.png
上一篇 下一篇

猜你喜欢

热点阅读