Рубрики
Без рубрики

Создание связанного списка в Python с примерами

Положение построения связанного списка в Python с примерами впервые появились на QVault. Связанный список … Tagged с Python, информатикой, языками, списком рассылки.

Пост Создание связанного списка в Python с примерами впервые появился на QVault Отказ

Связанный список – это линейная структура данных, где элементы не хранятся рядом друг с другом в памяти. Элементы в связанном списке связаны с использованием указателей или ссылок. Связанные списки – это упорядоченная коллекция объектов, аналогична нормальному списку. Связанные списки стоят отдельно от списков в том, как они хранят элементы в памяти. В то время как обычные списки (массивы или ломтики) используют непрерывный блок памяти для хранения ссылок на свои данные, связанные списки хранилища ссылок (указатели) как часть каждого элемента.

источник

Нормальный список – это просто указатель на первый элемент в списке, а конкретный элемент может быть получен, обеспечивая смещение памяти.

Связанный список также просто указатель на первый элемент в списке, но смещения памяти не сделают нам никаких хороших. Нам нужно изучить первый элемент следующий Указатель, чтобы увидеть, где следующий элемент, то мы можем перейти к нему. Оттуда мы можем найти следующий элемент и так с помощью списка.

Пример ссылка на Python

Узел класс

Во-первых, мы построим Узел сорт. LinkedList Класс, который мы в конечном итоге построили, будет список Узел s.

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

    def set_next(self, node):
        self.next = node

    def  __repr__ (self):
        return self.val

Каждый узел имеет валь Участник данных (информация ИТ-магазины) и A Следующий Участник данных. Следующий Участник данных просто указывает на следующую Узел В списке, если есть один, иначе это Никто

Соединенный список класса Class

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

Конструктор легко – просто инициализировать пустой голова указатель. Это указывает на у нас сейчас есть пустой список.

Итализация по списку

Давайте попробуем легко повторять каждый элемент в списке, используя Python’s для _ в _ синтаксис.

def  __iter__ (self):
        node = self.head
        while node is not None:
            yield node
            node = node.next

Реализация Python’s __er____ Способ, мы теперь можем использовать итерационный синтаксис. Например, Для элемента в Linked_List: Отказ

Добавление в список

Давайте создадим способ добавить элементы на хвост списка, add_to_tail метод. Он принимает узел в качестве ввода, итерации во всем списке, затем добавляет данный узел к концу.

def add_to_tail(self, node):
        if self.head == None:
            self.head = node
            return
        for current_node in self:
            pass
        current_node.set_next(node)

Снятие из списка

Есть и другие способы удаления предметов из списка, но на данный момент, и, в качестве примера, давайте напишем Удалить из головы метод.

def remove_from_head(self):
        if self.head == None:
            return None
        temp = self.head
        self.head = self.head.next
        return temp

Remove_from_head Удаляет и возвращает первый элемент из списка, предполагая, что один существует.

Печать связанного списка

Последнее, но не менее важное, мы можем реализовать Python’s __repr__ () метод, чтобы мы могли назвать Печать () непосредственно в списке и контролировать то, что он напечатан. Вот представление, которое мне нравится:

def  __repr__ (self):
        nodes = []
        for node in self:
            nodes.append(node.val)
        return " -> ".join(nodes)

Этот метод будет распечатать значение каждого узла в порядке со стрелками между ними. Например, Здравствуйте -> Это -> -> Мой -> Список Отказ

Применение

linked_list = LinkedList()
linked_list.add_to_tail(Node('john'))
linked_list.add_to_tail(Node('sally'))
linked_list.add_to_tail(Node('jimmy'))
print("ll:", linked_list)
first = linked_list.remove_from_head()
print("removed:", first)
print("ll:", linked_list)

Полный связанный код списка пример

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

    def  __iter__ (self):
        node = self.head
        while node is not None:
            yield node
            node = node.next

    def  __repr__ (self):
        nodes = []
        for node in self:
            nodes.append(node.val)
        return " -> ".join(nodes)

    def add_to_tail(self, node):
        if self.head == None:
            self.head = node
            return
        for current_node in self:
            pass
        current_node.set_next(node)

    def remove_from_head(self):
        if self.head == None:
            return None
        temp = self.head
        self.head = self.head.next
        return temp

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

    def set_next(self, node):
        self.next = node

    def  __repr__ (self):
        return self.val

Спасибо за прочтение!

Возьми Курсы компьютерных наук на нашей новой платформе

Следуйте и ударим нас в Twitter @q_vault. Если у вас есть какие-либо вопросы или Комментарии

Подписаться на нашу рассылку для большего количества стран программирования

Оригинал: “https://dev.to/qvault/building-a-linked-list-in-python-with-examples-4df6”