Skip to content

Commit

Permalink
Merge pull request #336 from MrWeast/feature/unordered-linked-list-py…
Browse files Browse the repository at this point in the history
…thon

create unordered list in python
  • Loading branch information
kelvins authored Dec 1, 2023
2 parents 5531625 + b98c692 commit 5438853
Show file tree
Hide file tree
Showing 2 changed files with 115 additions and 2 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2230,8 +2230,8 @@ In order to achieve greater coverage and encourage more people to contribute to
</a>
</td>
<td> <!-- Python -->
<a href="./CONTRIBUTING.md">
<img align="center" height="25" src="./logos/github.svg" />
<a href="./src/python/unordered_linked_list.py">
<img align="center" height="25" src="./logos/python.svg" />
</a>
</td>
<td> <!-- Go -->
Expand Down
113 changes: 113 additions & 0 deletions src/python/unordered_linked_list.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
class Node:
def __init__(self, value, rptr=None) -> None:
self.value = value
self.rptr = rptr

@property
def get_value(self):
return self.value

@property
def next(self):
return self.rptr

@next.setter
def next(self, ptr):
self.rptr = ptr


class Unordered_Linked_List:
def __init__(self) -> None:
self.first_node = None

def insert(self, value):
# inserts a new node with the given value
if self.first_node is None:
self.first_node = Node(value)
else:
tmp = Node(value)
tmp.next = self.first_node
self.first_node = tmp

def find(self, value):
# returns true if the specified value is in your list
ptr = self.first_node
while ptr is not None:
if ptr.value == value:
print(f"{value} is in your list")
return True
else:
ptr = ptr.next

print(f"{value} is not in your list")
return False

def size(self): # returns size of the list
ptr = self.first_node
i = 0
while ptr is not None:
ptr = ptr.next
i += 1
print(f"Your list is of size {i}")
return i

def remove(self, value):
# removes all instances of a given value
ptr = self.first_node
prev = None
while ptr is not None:
if ptr.value == value:
if ptr == self.first_node:
tmp = ptr.next
self.first_node = tmp
else:
prev.next = ptr.next

prev = ptr
ptr = ptr.next

def show(self):
ptr = self.first_node
val = []
while ptr is not None:
val.append(ptr.get_value)
ptr = ptr.next

print(val)


def main():
list = Unordered_Linked_List()

list.insert(1)
list.insert(3)
list.insert(5)
list.insert(2)

list.size()
list.show()

list.find(3)
list.find(9)

list.remove(1)
list.remove(3)
list.remove(5)
list.remove(2)

list.show()

list.insert(1)
list.insert(3)
list.insert(5)
list.insert(3)

list.show()

list.remove(3)

list.show()


if __name__ == "__main__":
main()

0 comments on commit 5438853

Please sign in to comment.