У меня есть задание в связанном списке, и название игры состоит в том, чтобы добавлять слова из строки в массив, связанный со списком, который упорядочен в алфавитном порядке с указателями.
Однако, когда я запускаю следующий код, оболочка Python зависает, и результаты не возвращаются. Пожалуйста помоги! Спасибо!
Я думаю, что здесь может быть ошибка, но я не уверен, почему ничего не возвращается: /
if self.NextFree != len(self.array):
prev = curr = self.Start
while self.array[curr].word < nword:
prev = curr
curr = self.array[curr].pointer
Полный код здесь: (Извините, если я давно начинающий! :))
class ListNode:
def __init__(self,word,pointer,count = 1):
self.word = word
self.pointer = pointer
self.count = count
class LinkedList:
def __init__(self):
self.array = []
self.Start = -1
self.NextFree = self.Start + 1
def Initialise(self):
MAX = 30
for i in range(MAX-1):
self.array.append(ListNode('',i+1))
self.array.append(ListNode(' ', -1)) #last node has pointer of -1
def Display(self):
print(self.Start, self.NextFree, len(self.array),sep = ' ')
print("Index ", "Content ", "Count ", "Pointer")
for i in range(len(self.array)):
print('{0:<7}{1:<11}{2:<8}{3:}'.format(i, self.array[i].word, self.array[i].count, self.array[i].pointer))
def IsEmpty(self):
return self.Start == -1
def IsFull(self):
return self.NextFree == len(self.array)
def Update(self,nword): #nword = newword
if self.IsEmpty():
self.Start = 0
self.array[0].word = nword
self.NextFree += 1
else:
if self.NextFree != len(self.array):
prev = curr = self.Start
while self.array[curr].word < nword:
prev = curr
curr = self.array[curr].pointer
if self.array[curr].word == nword:
self.array[curr].count += 1
else:
self.array[prev].pointer = self.NextFree
self.array[self.NextFree].word = nword
self.array[self.NextFree].pointer = curr
self.NextFree += 1
else:
print ("f")
def DisplayT(self):
for i in range(len(self.array)):
print(self.array[i].word)
l = LinkedList()
l.Initialise()
##with open("Story.txt") as file:
## for words in file.readline().split(" "): #story.txt is single line
## l.Update(words)
story = "she sells seashells by the seashore the shells she sells are surely seashells so if she sells shells on the seashore i am sure she sells seashore shells peter piper picked a peck of pickled peppers did peter piper pick a peck of pickled peppers if peter piper picked a peck of pickled peppers where is the peck of pickled peppers peter piper picked"
for words in story:
l.Update(words)
l.Display()