Zrozumienie implementacji list połączonych w Pythonie

Zdjęcie z Unsplash

Dane nie są zapisywane w sąsiednich miejscach pamięci, takich jak tablice. I każdy połączony element jest nazywany węzłem i połączony przez wskaźniki. Head jest początkowym węzłem na liście łączy. Dynamiczny to rozmiar powiązanej listy. Tak więc możemy mieć dowolną liczbę węzłów bez pamięci urządzenia. Połączone są dwa rodzaje list. Przyjrzyjmy się dokładnej lekcji jedna po drugiej.

Lista połączona pojedynczo

Połączona lista ma pojedynczy wskaźnik na połączonej liście połączony z następnym węzłem. Dla każdego węzła na połączonej liście musimy przechowywać dane i wskaźnik. Null jako następny wskaźnik dla zakończenia połączonej listy zawiera ostatni węzeł w połączonej liście.

Przede wszystkim zostanie utworzony węzeł połączonej listy. Możemy łatwo zbudować węzeł z klasą Pythona. Klasa zawiera dane i wskaźnik następnego węzła.

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

class LinkedList:
	def __init__(self):
		self.head = None

class LinkedList:
	def insert(self, new_node):
		if self.head:
			last_node = self.head
			while last_node != None:
				last_node = last_node.next
			last_node.next = new_node
		else:
			self.head = new_node

class LinkedList:
	def display(self):
		temp_node = self.head
		while temp_node != None:
			print(temp_node.data, end='->')
			temp_node = temp_node.next
		print('Null')

class Node:
	def __init__(self, data):
		self.data = data
		self.next = None
class LinkedList:
	def __init__(self):
		self.head = None
	def insert(self, new_node):
		if self.head:
			last_node = self.head
			while last_node.next != None:
				last_node = last_node.next
			last_node.next = new_node
		else:
			self.head = new_node
	def display(self):
		temp_node = self.head
		while temp_node != None:
			print(temp_node.data, end='->')
			temp_node = temp_node.next
		print('Null')
if __name__ == '__main__':
	linked_list = LinkedList()
	linked_list.insert(Node(1))
	linked_list.insert(Node(2))
	linked_list.insert(Node(3))
	linked_list.insert(Node(4))
	linked_list.insert(Node(5))
	linked_list.insert(Node(6))
	linked_list.insert(Node(7))
	linked_list.display()

1->2->3->4->5->6->7->Null

Lista podwójnie połączona

Lista podwójnie połączona ma dwa wskaźniki na liście połączonej, które są połączone z poprzednim węzłem. Dla każdego węzła na połączonej liście musimy przechowywać dane i dwa punkty. Początkowy węzeł ma wartość zero, a kolejny punkt w ostatnim węźle ma wartość zero, aby pokazać koniec połączonej listy po obu stronach.

Lista z podwójnymi linkami zawiera również porównywalne metody implementacji wykazu z jednym linkiem. Powtórzę, że wyjaśnienie tych samych rzeczy będzie dla ciebie męczące. Przejrzyj kod na każdym kroku, a szybko go zrozumiesz.

Tworzy węzeł zawierający wskaźnik poprzedniego węzła, dane i wskaźnik następnego węzła dla podwójnie połączonej listy.

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

class LinkedList:
	def __init__(self):
		self.head = None

class LinkedList:
	def insert(self, new_node):
		if self.head:
			last_node = self.head
			while last_node.next != None:
				last_node = last_node.next
			new_node.prev = last_node
			last_node.next = new_node

class LinkedList:
	def display(self):
		print("Normal Order: ", end='')
		temp_node = self.head
		while temp_node != None:
			print(temp_node.data, end=' ')
			temp_node = temp_node.next
		print()
		print("Reverse Order: ", end='')
		last_node = self.head
		while last_node.next != None:
			last_node = last_node.next
		temp_node = last_node
		while temp_node != None:
			print(temp_node.data, end=' ')
			temp_node = temp_node.prev
		print()

Suggested posts

Wyszukiwanie informacji o nazwach domen

Fragment książki Small, Sharp Software Tools autorstwa Briana P. Hogana

Wyszukiwanie informacji o nazwach domen

Kiedy wysyłasz żądanie do facebook.com, Twój komputer wyszukuje nazwę domeny, aby przetłumaczyć tę nazwę domeny na adres IP, aby komputer mógł nawiązać to połączenie.

Wskazówki dotyczące przejścia na cyberbezpieczeństwo bez zaplecza technicznego.

Wskazówki dotyczące przejścia na cyberbezpieczeństwo bez zaplecza technicznego.

W 2022 roku przeszedłem z roli nietechnicznej do cyberbezpieczeństwa. Miałem pierwszy stopień z języka niemieckiego, wiem, że jesteś zszokowany i ciekawy, jak udało mi się pomyślnie przejść, Cóż, po prostu się stało.

Related posts

Zbieranie OSINT na potrzeby polowania na zagrożenia

Zbieranie OSINT na potrzeby polowania na zagrożenia

Hej, cyberentuzjaści! Witamy ponownie w serii OSINT poświęconej polowaniu na zagrożenia. W pierwszym artykule przedstawiłem przegląd OSINT i jego znaczenie w polowaniu na zagrożenia.

Kłamstwo kowbojskie

Jak megakorporacje sprzedały Amerykanom mocne kłamstwo

Kłamstwo kowbojskie

Jest wspaniale złoty poranek na falistych wzgórzach zachodu, gdy pierwsze promienie słońca oświetlają oszronioną trawę na równinach. Stado spokojnego bydła rasy Angus, czarnego jak smoła i masywne, rysuje się na tle wschodu słońca, gdy zmierza utartym szlakiem do miejsca, które wszyscy dobrze znają; bar śniadaniowy.

Czy sztuka jest kiedykolwiek apolityczna?

Czy sztuka jest kiedykolwiek apolityczna?

Wczoraj zamknęliśmy drzwi tegorocznego Konkursu Piosenki Eurowizji błyskotliwym, chaotycznym wielkim finałem, w którym szwedzka piosenkarka Loreen zabrała do domu trofeum, stając się pierwszą kobietą, która wygrała dwa razy i przywracając koronę Szwecji 50 lat po tym, jak ABBA wygrała konkurs z „Waterloo”. Stali się jednym z największych zespołów w kanonie muzyki pop.

NIEOGRANICZONE ŻYCIE

Kiedy dorastasz, zwykle słyszysz, że świat jest taki, jaki jest, a twoje życie polega na tym, by żyć swoim życiem w świecie, nigdy nie ryzykując życia, po prostu podążaj wyznaczoną ścieżką i umrzyj w końcu i staraj się nie za bardzo walnij w ściany. Ale to bardzo ograniczone życie.