0% found this document useful (0 votes)
10 views3 pages

Linked List

The document defines a node class and linked list data structure. It includes functions to add, delete, find, and insert nodes in the linked list in both normal and ordered ways. The linked list is initialized with sample nodes.

Uploaded by

akartar77
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views3 pages

Linked List

The document defines a node class and linked list data structure. It includes functions to add, delete, find, and insert nodes in the linked list in both normal and ordered ways. The linked list is initialized with sample nodes.

Uploaded by

akartar77
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

class node:

# Public Data : INTEGER


# Public nextNode : INTEGER
def __init__(self, DataP, nextNodeP):
self.Data = DataP
self.nextNode = nextNodeP

# DECLARE linkedList : ARRAY[0:9] OF node


linkedList = [node(1, 1), node(5, 4), node(6, 7), node(7, -1), node(2, 2), node(0,
6), node(0, 8), node(56, 3),node(0, 9), node(0, -1)]

startPointer = 0
emptyList = 5

def addNode(currentPointer):
global linkedList
global emptyList

data = int(input("Enter the Data to Add: "))


# CHECK IF THE ARRAY IS FULL OR NOT
if emptyList < 0 or emptyList > 9:
return False
else:
# INCREMENT EMPTYLIST POINTER AFTER STORING IT IN A TEMPORARY VARIABLE
KNOWN AS freelist
freelist = emptyList
emptyList = linkedList[emptyList].nextNode

# CREATE A newNode
newNode = node(data, -1)

# STORE IT WHERE THE freelist IS POINTING

linkedList[freelist] = newNode

# NOW YOU HAVE TO FIND THE LAST NODE INDEX


previouspointer = 0
while currentPointer != -1:
previouspointer = currentPointer
currentPointer = linkedList[currentPointer].nextNode

linkedList[previouspointer].nextNode = freelist
return True

def deleteNode():
global linkedList
global emptyList
global startPointer

currentpointer = startPointer
Datatoremove = int(input("Enter the data that you want to remove: "))

#Search the index of the element that you want to remove


previouspointer = 0
while currentpointer != -1 and linkedList[currentpointer].Data != Datatoremove:
previouspointer = currentpointer
currentpointer = linkedList[currentpointer].nextNode

#First condition check it exists or not by Currentpointer


if currentpointer == -1:
return False
else:
#In else we will have two cases 1) start node to be removed or any other
if startPointer == currentpointer:
startPointer = linkedList[startPointer].nextNode
else:
linkedList[previouspointer].nextNode =
linkedList[currentpointer].nextNode

linkedList[currentpointer].Data = 0
linkedList[currentpointer].nextNode = emptyList
emptyList = currentpointer
return True

def outputNodes():
#Can not take them as byref parameters so have taken as global
global linkedList
global startPointer
currentpointer = startPointer
while currentpointer != -1:
print(linkedList[currentpointer].Data)
currentpointer = linkedList[currentpointer].nextNode

def FindItem(currentpointer, SearchValue):


global linkedList
while currentpointer != -1:
if linkedList[currentpointer].Data == SearchValue:
return currentpointer
else:
currentpointer = linkedList[currentpointer].nextNode

return currentpointer

def OrderedInsertion(currentpointer):
global linkedList
global startPointer
global emptyList

datatoinsert = int(input("Enter the data that you want to add: "))

#CHECK DO YOU HAVE SPACE OR NOT


if emptyList < 0 or emptyList > 9:
return False
else:
freelist = emptyList
emptyList = linkedList[emptyList].nextNode

# CREATE A NEW NODE


newNode = node(datatoinsert, -1)
# STORE IT BY USING freelist
linkedList[freelist] = newNode

#Now find the correct position to insert the node


previouspointer = 0
while currentpointer != -1 and datatoinsert >
linkedList[currentpointer].Data:
previouspointer = currentpointer
currentpointer = linkedList[currentpointer].nextNode

if currentpointer == startPointer:
linkedList[freelist].nextNode = startPointer
startPointer = freelist
else:
linkedList[freelist].nextNode = linkedList[previouspointer].nextNode
linkedList[previouspointer].nextNode = freelist

return True

You might also like