Learn practical skills, build real-world projects, and advance your career

cs-102-prac

Use the "Run" button to execute the code.

class Stack():
    def __init__(self):
        self.items = []
 
    def is_empty(self):
        return self.items == []

 
    def push(self, data):
        if len(self.items)==5:
            return "Stack full"
        else:
            self.items.append(data)
 
    def pop(self):
        if is_empty:
            return "Stack Empty"
        return self.items.pop()
 
class Node():           
    def __init__(self):
        self.next = None
        self.stack= Stack()                   #Makes an emty Stack in each node
         
    def add(data,index):
        self.index=index           
        if len(self.stack)==5:
            raise ValueError(f"Stack at index {index} is full")   #Checks if stack is full
        else:
            self.stack.push(self.data)
            
    def search_stack(number,i):
        tmp=Stack()                                 #tmp stack to hold popped numbers
        for j in range(len(self.stack)):
            num = self.stack.pop()
            if num == number:
                self.stack = tmp                          # stack joined back
                return "Number found and deleted"
            else:
                tmp.push(num)
        else:
            self.stack = tmp                             
            return f"Number not found in the stack with index {i}"
        
        
    def view_stack(self):
        return self.stack.items

        
# Class to create a Linked List
class LinkedList():
    def __init__(self, head=None):
        self.head = head
        for i in range(10):
            node = Node()                     #Creating 10 empty nodes linked to each other
            if not self.head:
                self.head = node
            else:
                node.next = self.head
                self.head = node
        
      
    def push_at(self,object):               # Adding data to the empty node's stacks
        index = object%10
        temp = self.head
        for i in range(0, index-1):
            temp = temp.next
        temp.add(object,index) 
         
        
    def search(self,number):
        self.head=head
        for i in range(10):
            temp_node=head.next
            temp_node.search_stack(number,i)
        else:
            raise ValueError("Number not in linked list")
     
    
    def print_ll(self):
        self.head=head
        for i in range(10):
            temp_node=head.next
            temp_node.view_stack()
        return "That is the end of LL"

        
        
myList=LinkedList()
myList.push_at(200)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) /tmp/ipykernel_161/1171310630.py in <module> ----> 1 myList.push_at(200) /tmp/ipykernel_161/1809426879.py in push_at(self, object) 32 for i in range(0, index-1): 33 temp = temp.next ---> 34 temp.add(object) TypeError: add() takes 1 positional argument but 2 were given