class Node:
def __init__(self, data):
self.data = data
self.next = None
def setNextNode(self,node):
self.next = node
def getData(self):
return(self.data)
def getNextNode(self):
return(self.next)
def setData(self,data):
self.data = data
class LinkedList:
def __init__(self,head=None):
self.head = head
self.size = 0
def append(self,data):
node = Node(data)
if(self.size==0):
self.head = node
node.next = None
self.size+=1
else:
x=self.head
while x:
if(x.next == None):
x.setNextNode(node)
node.next = None
x = x.next
self.size+=1
return True
def insert(self,data,place):
node = Node(data)
if(place>=self.size):
self.append(data)
else:
x = self.head
for i in range(1,place-1):
x = x.getNextNode()
y = x.getNextNode()
x.setNextNode(node)
node.next = y
def printList(self):
arr = []
x = self.head
while x:
arr.append(x.data)
#print(x.getData())
x = x.getNextNode()
print(arr)
def prepend(self,data):
node = Node(data)
node.next = self.head
self.head = node
self.size+=1
return True
def remove(self,index):
curr = self.head
if(index==0):
x = curr.next
self.head = x
curr.next = None
else:
for i in range(index-1):
curr = curr.next
x = curr.next
curr.next = x.next
self.size-=1
self.printList()
def reverse(self):
if(self.size==1):
print(self.head)
else:
prev = None
curr = self.head
while(curr != None):
next = curr.next
curr.next = prev
prev = curr
curr = next
self.head = prev
return True
if __name__ == '__main__':
print("hello!")
llist = LinkedList()
llist.append(5)
llist.append(10)
llist.append(15)
llist.append(20)
#llist.insert(100,3)
#llist.insert(200,6)
#llist.printList()
#llist.prepend(0)
#llist.insert(300,20)
#llist.printList()
#llist.remove(7)
llist.reverse()
llist.printList()