From 212ed996dd57c7b2e562807947cc9f3cb505e07d Mon Sep 17 00:00:00 2001 From: FVFYK3GEHV22 Date: Fri, 16 Oct 2020 18:48:00 +0700 Subject: [PATCH 1/4] adding some code for stack and queue in python --- .../code/python/stack_queue.py | 99 +++++++++++++++++++ .../stacks_and_queues/stacks_and_queues.md | 6 ++ 2 files changed, 105 insertions(+) create mode 100644 contents/stacks_and_queues/code/python/stack_queue.py diff --git a/contents/stacks_and_queues/code/python/stack_queue.py b/contents/stacks_and_queues/code/python/stack_queue.py new file mode 100644 index 000000000..5991827f2 --- /dev/null +++ b/contents/stacks_and_queues/code/python/stack_queue.py @@ -0,0 +1,99 @@ +import numpy as np + +class Node: + def __init__(self, val): + self.value = val + self.next = None + +class Stack(): + def __init__(self): + self.stack_list = None + + def push(self, val): + if self.stack_list == None: + self.stack_list= Node(val) + else : + temp = Node(val) + temp.next = self.stack_list + self.stack_list = temp + + def pop(self): + if self.stack_list == None: + print ("Stack is Empty") + return None + else: + pop_val = self.stack_list.value + self.stack_list = self.stack_list.next + print("you just pop ", pop_val) + return pop_val + + def get_top(self): + return self.stack_list.value + + def print(self): + print ("Current stack list : ") + temp = self.stack_list + while(temp.next != None): + print(temp.value) + temp = temp.next + print(temp.value) + print("========================") + +class Queue(): + def __init__(self): + self.queue_list=None + + def enqueue(self,val): + temp = Node(val) + if self.queue_list == None: + self.queue_list = temp + else: + curr = self.queue_list + while(curr.next != None): + curr = curr.next + curr.next = temp + + def dequeue(self): + if self.queue_list == None: + return None + else: + temp = self.queue_list + dequeue_val = self.queue_list.value + self.queue_list = temp.next + return dequeue_val + + def get_front(self): + curr = self.queue_list + while(curr.next != None): + curr = curr.next + return curr.value + + def print(self): + print("Current queue list = ") + temp = self.queue_list + while(temp.next != None): + print(temp.value) + temp = temp.next + print (temp.value) + print("========================") + + +example_stack = Stack() +example_stack.push(1) +example_stack.push(2) +example_stack.push(3) +example_stack.print() +example_stack.pop() +example_stack.push(4) +example_stack.print() +print ("current top => ",example_stack.get_top()) + +example_queue = Queue() +example_queue.enqueue(1) +example_queue.enqueue(2) +example_queue.enqueue(3) +example_queue.print() +example_queue.dequeue() +example_queue.enqueue(4) +example_queue.print() +print ("current front => ", example_queue.get_front()) \ No newline at end of file diff --git a/contents/stacks_and_queues/stacks_and_queues.md b/contents/stacks_and_queues/stacks_and_queues.md index 17b8b75b2..dec2268a7 100644 --- a/contents/stacks_and_queues/stacks_and_queues.md +++ b/contents/stacks_and_queues/stacks_and_queues.md @@ -15,6 +15,12 @@ The notation for this depends on the language you are using. Queues, for example ## License +## Example Code +{% method %} +{% sample lang="py" %} +[import, lang:"python"](code/python/stack_queue.py) +{% endmethod %} + ##### Code Examples The code examples are licensed under the MIT license (found in [LICENSE.md](https://github.com/algorithm-archivists/algorithm-archive/blob/master/LICENSE.md)). From 8d2852d2f8756f4aa6d0a1825d6e50c89746b25c Mon Sep 17 00:00:00 2001 From: FVFYK3GEHV22 Date: Fri, 16 Oct 2020 18:51:36 +0700 Subject: [PATCH 2/4] delete unneeded import --- contents/stacks_and_queues/code/python/stack_queue.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/contents/stacks_and_queues/code/python/stack_queue.py b/contents/stacks_and_queues/code/python/stack_queue.py index 5991827f2..1d6a2e685 100644 --- a/contents/stacks_and_queues/code/python/stack_queue.py +++ b/contents/stacks_and_queues/code/python/stack_queue.py @@ -1,5 +1,3 @@ -import numpy as np - class Node: def __init__(self, val): self.value = val From 60ae9d89cf314a714799ba1f11609b3f5704913a Mon Sep 17 00:00:00 2001 From: FVFYK3GEHV22 Date: Fri, 16 Oct 2020 20:40:14 +0700 Subject: [PATCH 3/4] changing some identyty comparison and raise error --- .../code/python/stack_queue.py | 70 +++++++++---------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/contents/stacks_and_queues/code/python/stack_queue.py b/contents/stacks_and_queues/code/python/stack_queue.py index 1d6a2e685..733c811ac 100644 --- a/contents/stacks_and_queues/code/python/stack_queue.py +++ b/contents/stacks_and_queues/code/python/stack_queue.py @@ -3,88 +3,86 @@ def __init__(self, val): self.value = val self.next = None -class Stack(): + +class Stack: def __init__(self): self.stack_list = None - + def push(self, val): - if self.stack_list == None: - self.stack_list= Node(val) - else : + if self.stack_list is None: + self.stack_list = Node(val) + else: temp = Node(val) temp.next = self.stack_list self.stack_list = temp - + def pop(self): - if self.stack_list == None: - print ("Stack is Empty") - return None + if self.stack_list is None: + raise ValueError("Stack is empty") else: pop_val = self.stack_list.value self.stack_list = self.stack_list.next - print("you just pop ", pop_val) return pop_val - + def get_top(self): return self.stack_list.value - + def print(self): - print ("Current stack list : ") + print("Current stack list : ") temp = self.stack_list - while(temp.next != None): + while temp.next: print(temp.value) temp = temp.next print(temp.value) - print("========================") -class Queue(): + +class Queue: def __init__(self): - self.queue_list=None - - def enqueue(self,val): + self.queue_list = None + + def enqueue(self, val): temp = Node(val) - if self.queue_list == None: + if self.queue_list is None: self.queue_list = temp else: curr = self.queue_list - while(curr.next != None): + while curr.next != None: curr = curr.next curr.next = temp - + def dequeue(self): - if self.queue_list == None: - return None + if self.queue_list is None: + raise ValueError("Queue is empty") else: temp = self.queue_list dequeue_val = self.queue_list.value - self.queue_list = temp.next + self.queue_list = temp.next return dequeue_val - + def get_front(self): curr = self.queue_list - while(curr.next != None): + while curr.next: curr = curr.next return curr.value - + def print(self): - print("Current queue list = ") temp = self.queue_list - while(temp.next != None): + while temp.next: print(temp.value) temp = temp.next - print (temp.value) - print("========================") - + print(temp.value) + example_stack = Stack() example_stack.push(1) example_stack.push(2) example_stack.push(3) example_stack.print() -example_stack.pop() +print("you just pop ", example_stack.pop()) + example_stack.push(4) example_stack.print() -print ("current top => ",example_stack.get_top()) +print("current top => ", example_stack.get_top()) example_queue = Queue() example_queue.enqueue(1) @@ -94,4 +92,4 @@ def print(self): example_queue.dequeue() example_queue.enqueue(4) example_queue.print() -print ("current front => ", example_queue.get_front()) \ No newline at end of file +print("current front => ", example_queue.get_front()) From 4b4a64c85e15ac623b6ab193fec98a5985aeead5 Mon Sep 17 00:00:00 2001 From: FVFYK3GEHV22 Date: Fri, 16 Oct 2020 20:43:03 +0700 Subject: [PATCH 4/4] deleting some comparison --- contents/stacks_and_queues/code/python/stack_queue.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contents/stacks_and_queues/code/python/stack_queue.py b/contents/stacks_and_queues/code/python/stack_queue.py index 733c811ac..5303097f3 100644 --- a/contents/stacks_and_queues/code/python/stack_queue.py +++ b/contents/stacks_and_queues/code/python/stack_queue.py @@ -46,7 +46,7 @@ def enqueue(self, val): self.queue_list = temp else: curr = self.queue_list - while curr.next != None: + while curr.next: curr = curr.next curr.next = temp