Mar-04-2019, 09:38 PM
Hi Folks,
Apologies. I accidentally cut the code of how Im deleting the first node.
Thanks ichabod801, I take your point about __init__ but is that likely to be a factor in this instance?
Apologies. I accidentally cut the code of how Im deleting the first node.
Thanks ichabod801, I take your point about __init__ but is that likely to be a factor in this instance?
class Node: def init(self, dataval): self.dataval = dataval self.nextval = None class LinkedList: def init(self): self.headval = None def listprint(self): printval = self.headval while printval is not None: print (printval.dataval) printval = printval.nextval def insertAtBegining(self): nodeToPutAtStart = input("Enter Node To Put At The Start: ") startNode = Node() startNode.init(nodeToPutAtStart) startNode.nextval = self.headval self.headval = startNode print(nodeToPutAtStart, " Has Been Added To The Start Of The Linked List") def insertAtEnd(self): nodeToPutOnEnd = input("Enter Node To Put On The End: ") endNode = Node() endNode.init(nodeToPutOnEnd) if self.headval is None: self.headval = endNode return laste = self.headval while(laste.nextval): laste = laste.nextval laste.nextval=endNode print(nodeToPutOnEnd, " Has Been Added To The End Of The Linked List") def insertInbetween(self): middleNodeUserInput = input("Enter Middle Node: ") nodeToAddUserInput = input("Enter New Note To Add: ") middleNode = Node() middleNode.init(middleNodeUserInput) nodeToAdd = Node() nodeToAdd.init(nodeToAddUserInput) nodeToAdd.nextval = middleNode.nextval middleNode.nextval = nodeToAdd def removeNode(self): nodeToRemove = input("Enter Node To Remove: ") HeadVal = self.headval if (HeadVal is not None): if (HeadVal.dataval == nodeToRemove): self.head = HeadVal.nextval HeadVal = None return else: while (HeadVal is not None): if HeadVal.dataval == nodeToRemove: self.head = HeadVal.nextval HeadVal = None break prev = HeadVal HeadVal = HeadVal.nextval prev.nextval = HeadVal.nextval HeadVal = None else: print("Nothing To Delete") def isEmpty(self): HeadVal = self.headval total = 0 while (HeadVal is not None): total+=1 HeadVal = HeadVal.nextval if(total == 0): print("List Is Empty") else: print("List Is Not Empty") print(total, " Elements In List") def MainMenu(): print("1. Create A Linked List") print("2. Delete A Linked List") print("3. Check If A Linked List Is Empty") print("4. Print Out The Values In The List") print("5. Find A Node In A Linked List") print("6. Insert A Node In A Linked List") print("7. Delete A Node In A Linked List") print("99. Exit") anotherOption = True while anotherOption == True: print("") selection=int(input("Main Menu --- Enter Choice: ")) if selection==1: myList = LinkedList() myList.init() print("Linked List Created") elif selection==6: print("") print("A. Insert A Node Into The Front Of The Linked List") print("B. Insert A Node Into The End Of The Linked List") print("C. Insert A Node In Between Nodes On The Linked List") print("") entrySelection=input("Enter Insert Node Choice: ") if entrySelection in ["A", "a"]: myList.insertAtBegining() elif entrySelection in ["B", "b"]: myList.insertAtEnd() elif entrySelection in ["C", "c"]: myList.insertInbetween() else: print("") print("Enter A Valid Selection For Inserting Node") elif selection==4: myList.listprint() elif selection==7: myList.removeNode() elif selection==99: anotherOption = False print("") print("Exiting Main Menu") elif selection==3: myList.isEmpty() else: print("") print("Enter A Valid Selection On Main Menu") MainMenu()