Heim  >  Artikel  >  Backend-Entwicklung  >  Python implementiert eine einfach verknüpfte Liste

Python implementiert eine einfach verknüpfte Liste

巴扎黑
巴扎黑Original
2016-11-26 11:54:181329Durchsuche

# programming:utf-8 


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


class LinkList: 
    def __init__(self, data=[0]): 
        self.head = None 
        self.init_link_list(data) 

    # 初始化链表 
    # data 为数组 
    def init_link_list(self, data): 
        if len(data) == 0: 
            print("Initialisierungsdaten sind. null") 
            zurück 
self.head = Node(data[0]) 
        current = self.head 
        für Index in data[1:]: 
            current.next = Node(index) 
            current = current.next

    # 获取当前结点 
    def get_node(self, index): 
        if self.is_empty(): 
            print("link is empty") 
           . return 
wenn Index > self.get_length() oder index <= 0: 
            print("node is not exist") 
            return 
        current = self.head 
        i = 0 
        while i < index: 
            if i == index - 1: 
                Strom zurückgeben 
            current = current.next 
            i += 1 

    # 获取当前元素的值 
    def get_data (self, index): 
        current = self.get_node(index) 
        if current None: 
            return „node is not exist“ 
        return current.data 

    # 打印链表 
    def print_link(self): 
        if self.is_empty(): 
            return 
        list = [] 
        current = self.head 
        while. current.n ext ist nicht None:
            list.append(current.data) 
            current = current.next 
        else: 
            list.append(current.data) 
        print(list) 

    # 获取链表长度 
    def get_length(self): 
        if self.is_empty(): 
            return 0 
        current = self.head 
        count =. 0 
        während current.next nicht None ist : 
            count += 1 
            current = current.next 
        else: 
            count += 1 
        return count 

    #判断链表是否为空 
# Wenn es leer ist, geben Sie true zurück
# Wenn es nicht leer ist, geben Sie false zurück
def is_empty(self):
return self.head is None

# Fügen Sie ein Element nach dem ein aktuelles Element
# Indexelement Index
# eingefügter Datenwert
def add_after(self, index, data):
current = self.get_node(index)
wenn aktuell None ist:
return „Knoten ist nicht vorhanden“
current_next = current.next
current.next = Node(data)
current = current.next
current.next = current_next

# Zum aktuellen Zeitpunkt Fügen Sie ein Element vor dem Element
def add_before(self, index, data):
if index == 1:
current = self.get_node(index)
self.head = ein Node(data)
self.head.next = current
pre.next = Node(data)
          pre = pre.
pre.next = current

# Holen Sie sich die vorheriges Element des aktuellen Elements
def get_pre_node(self, index):
if self.is_empty():
print(" link is empty")
return
if index > .get_length() oder index <= 1:
print("node is not exist")
pre = self .head
i = 0
while i < index:
if i == index - 2:
return pre
pre = pre.next >          i += 1

#Löschen Sie das angegebene Element und geben Sie den Wert des gelöschten Elements zurück
def remove( self, index):
wenn index == 1 und nicht self.is_empty():
data = self.head .data
self.head = self.head.next
Daten zurückgeben
pre_node = self.get_pre_node(index)
current = self.get_node(index)
wenn pre_node None oder current None ist:
print("data is not exist")
pre_node. next = current.next
return current.data

# Ändern Sie den Wert des aktuellen Knotens
def update (self, index, data):
current = self.get_node(index)
wenn aktuell None ist:
return „current node is none“
current.data = data

# Füge die neue verknüpfte Liste in die aktuelle verknüpfte Liste ein
def merge(self , Daten):
        size = self.get_length() 
        last_node = self.get_node(size) 
        last_node.next = data.head 
        return self 

# test 
y = (1,2 ,3,4) 
s = ["a", "b", "c", "d"] 
linkList = LinkList(y) 
# linkList.init_link_list(["a", " b", "c", "d"]) 
# second = LinkList() 
# second.init_link_list(["x", "y", "z"]) 
# linkList.add_after (-1, „x“) 
# linkList.add_after(1, „y“) 
# linkList.init_link_list([]) 
# linkList.add_before(1, „x“) 
# linkList.print_link() 
# print("item:", linkList.get_data(2)) 
# print("length:", linkList.get_length()) 
# print("ist leer ", linkList.is_empty()) 
# print(linkList.get_pre_node(3).data) 
# print("remove node:",linkList.remove(2)) 
# linkList.merge( zweitens) 


linkList.print_link() 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn