До сих пор я придумал с кодом, чтобы создать связанный список из нормального списка:Как удалить узел в связанном списке в python?
def createList(plist):
linkedList = None
# goes backwards, adding each element to the beginning
# of the list.
for index in range(len(plist)-1, -1, -1):
linkedList = insertValueHead(linkedList, plist[index])
return linkedList
def insertValueHead(linkedList, value):
newnode = {}
newnode["data"] = value
#set the next pointer of this new node to the head of the list, linkedList
#newnode is now the head of the list
newnode["next"] = linkedList
return newnode
def listString(linkedList):
ptr = linkedList
str1 = ''
while ptr != None:
str1 += str(ptr['data'])
ptr = ptr['next']
if ptr != None:
str1 += "->"
str1 = str1
return str1
Используя этот код, я смог превратить обычный список таких как [1,2,3,4 ] в это вместо того, запустив createList (PLIST):
{'data': 1, 'next': {'data': 2, 'next': {'data': 3, 'next': {'data': 4, 'next': None}}}}
Прямо сейчас, что я пытаюсь сделать, это удалить любой узел, который так же, как другой узел в связанном списке. Поэтому, если бы я должен был запустить программу со списком, например [1,1,2,5,7,7,8,8,10,10,10,10,10], он вернул бы 1,2,5,7 8,10. Мне было интересно, как я собираюсь удалить дублирующие узлы из словаря (связанного списка), который я создаю. До сих пор это код, который я придумал, но я не знаю, куда идти отсюда:
def noDups(plist):
node = plist
while node['next'] != None:
if node['data'] == node['next']['data']:
del node['next']
return node
И проверить это функция, я использую:
def testNoDups():
nums = createList([1,1,2,5,7,7,8,8,10,10,10,10,10])
print noDups(nums)
Любая помощь очень ценится! :)
Я не понимаю, хотите ли вы просто решить «не дублировать элементы в моей проблеме списка» или попросить структуру, которая эффективно внедряет и удаляет –