Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. # NullPointer should be set to -1 if using array element with index 0
  2. NULLPOINTER = -1
  3.  
  4. # Declare record type to store data and pointer
  5. class ListNode:
  6. def __init__(self):
  7. self.Data = ""
  8. self.Pointer = NULLPOINTER
  9.  
  10.  
  11. def InitialiseList():
  12. List = [ListNode() for i in range(8)]
  13. StartPointer = NULLPOINTER # set start pointer
  14. FreeListPtr = 0 # set starting position of free list
  15. for Index in range(7): # link all nodes to make free list
  16. List[Index].Pointer = Index + 1
  17. List[7].Pointer = NULLPOINTER # last node of free list
  18. return (List, StartPointer, FreeListPtr)
  19.  
  20. def InsertNode(List, StartPointer, FreeListPtr, NewItem):
  21. if FreeListPtr != NULLPOINTER:
  22. # there is space in the array
  23. # take node from free list and store data item
  24. NewNodePtr = FreeListPtr
  25. List[NewNodePtr].Data = NewItem
  26. FreeListPtr = List[FreeListPtr].Pointer
  27. # find insertion point
  28. PreviousNodePtr = NULLPOINTER
  29. ThisNodePtr = StartPointer # start at beginning of list
  30. while ThisNodePtr != NULLPOINTER and List[ThisNodePtr].Data < NewItem:
  31. # while not end of list
  32. PreviousNodePtr = ThisNodePtr # remember this node
  33. # follow the pointer to the next node
  34. ThisNodePtr = List[ThisNodePtr].Pointer
  35. if PreviousNodePtr == NULLPOINTER:
  36. # insert new node at start of list
  37. List[NewNodePtr].Pointer = StartPointer
  38. StartPointer = NewNodePtr
  39. else: # insert new node between previous node and this node
  40. List[NewNodePtr].Pointer = List[PreviousNodePtr].Pointer
  41. List[PreviousNodePtr].Pointer = NewNodePtr
  42. else:
  43. print("no space for more data")
  44. return (List, StartPointer, FreeListPtr)
  45.  
  46.  
  47. List, StartPointer, FreeListPtr = InitialiseList()
  48. List, StartPointer, FreeListPtr = InsertNode(List, StartPointer,FreeListPtr, "A")
  49. List, StartPointer, FreeListPtr = InsertNode(List, StartPointer,FreeListPtr, "B")
  50. OutputAllNodes(List, StartPointer)
  51. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement