pythongirl Ответов: 0

Реализация алгоритма удаления, вставки, поиска и обратного узла для односвязного списка в Python


Мне нужно создать функцию для односвязных списков, которая:

● Вставка: этот метод принимает значение в качестве параметра и добавляет узел, содержащий это значение, в конец связанного списка
● Удалить: этот метод удаляет узел из связанного списка. Если в качестве параметра передается индекс, то метод должен удалить узел с этим индексом. Если индекс не передается, то удалите первый элемент в списке
● Find: этот метод принимает значение в качестве параметра и возвращает индекс первого узла, содержащего это значение. Если не найдено узлов, содержащих это значение, верните False
● Реверс: этот метод реверсирует связанный список



Когда я запускаю это, я получаю, что вы можете использовать метод insert для связанного списка.
Также, пожалуйста, не редактируйте код из узла класса и связанного списка классов.

Что я уже пробовал:

```
class Node:
  def __init__(self, dataval=None):
    self.dataval = dataval
    self.nextval = None

class LinkedList:
  def __init__(self):
    self.headval = None
  def __str__(self):
    node = self.headval
    output = "[ "
    while(node != None):
      output = output + str(node.dataval) + ", "
      node = node.nextval
    if(len(output) > 2):
      output = output[:-2]
    return output + " ]"


def insert(self, val):
  new_node= Node(val)
  if self.headval is None:
    self.headval=new_node
    return
  n=self.headval
  while n.ref is not None:
    n=n.ref
  n.ref=new_node;


def delete(self, index=0):
  if self.headval is None:
    print("This list has no element to delete")
    return 
        
  if self.headval ==index:
    self.headval=self.headval.ref 
    return 
        
  n=self.headval 
  while n.ref is not None:
    if n.ref.item==x:
      break
    n=n.ref

  if n.ref is None:
    print("Item not found in list")
  else:
    n.ref=n.ref.ref


def find(self, val):
  current=self.headval 
  count=0
  while(current):
    if (count==val):
      return current
    count+=1
    current=current.next
  assert(False)
  return 0 

        
def reverse(self):
  prev=None
  n=self.headval
  while n is not None:
    next=n.ref
    n.ref=prev
    prev=n
    n=next
  self.headval=prev

```

Sandeep Mewara

Кажется, вы забыли задать свой вопрос. Где ты застрял?

pythongirl

Нет, я написал это там, наверху.

Gerry Schmitz

Вот как вы заканчиваете "вопрос": с "?".

Как это понять?

pythongirl

О хорошо и я бы объяснил тебе как читать но похоже это безнадежно :)

0 Ответов