Lurking
Lurking

Reputation: 31

Check whether a linked list is empty or not

Here is my code. I created a linked list manually to check if my method works or not. But the output I get is nothing. There is no output

class Node:
    def __init__(self, data=None):
        self.data = data
        self.next = None

node1=Node(2)
node2=Node(4)
node3=Node(5)
node1.next=node2
node2.next=node3
a=node1

class MyList():
    def __init__(self):
        self.head=Node()

    def isEmpty(self,a):
        return self.head.next is None

hello=MyList()
print(hello.isEmpty(a))


Upvotes: 0

Views: 730

Answers (2)

mayankmehtani
mayankmehtani

Reputation: 435

You never set the head node to point to another node in the way you're currently doing it (your head and "a" aren't actually the same node here). Pass in another variable as a node object to change this.

a = node1
class MyList():
    def __init__(self, head):
        self.head = head

    def isEmpty(self):
        return self.head is None # a linked list with a head is technically not empty

new_hello = MyList(a)
print (new_hello.isEmpty())

personally I would add an add_node(self, value) method and keep track of the end node as well, instead of doing it the way you are

Upvotes: 0

Cute Panda
Cute Panda

Reputation: 1498

In case you want to add data to LinkedList, you need to set the head of the list manually. This code is probably what you want:

class Node:
    def __init__(self, data=None):
        self.data = data
        self.next = None

node1=Node(2)
node2=Node(4)
node3=Node(5)
node1.next=node2
node2.next=node3

class MyList():
    def __init__(self):
        self.head=Node()

    def isEmpty(self):
        return self.head.data is None

hello=MyList()
print(hello.isEmpty())


new_hello = MyList()
new_hello.head=node1
print(new_hello.isEmpty())

Output

True
False

Upvotes: 1

Related Questions