Skip to content

Commit c685585

Browse files
authored
Merge pull request prabhupant#367 from cheymonty/stack_using_list
Stack using list
2 parents 58eb2d8 + fc0ed9b commit c685585

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class Node():
2+
3+
def __init__(self, val):
4+
self.val = val
5+
self.next = None
6+
7+
def delete_last_occurrence(head, val):
8+
if not head:
9+
return None
10+
11+
curr = head
12+
prev = None
13+
final_prev = None
14+
final_occ = None
15+
16+
while curr != None:
17+
if curr.val == val:
18+
final_prev = prev
19+
final_occ = curr
20+
21+
prev = curr
22+
curr = curr.next
23+
24+
25+
if final_occ:
26+
# special case that checks for a 1 node list that equals the val
27+
if final_prev:
28+
final_prev.next = final_occ.next
29+
else:
30+
head = None
31+
32+
return head

data_structures/linked_list/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@
99
* [Odd-Even Arrangement](odd_even_arrangement.py)
1010
* [Merge Linked List](merge_linked_list.py)
1111
* [Remove Duplicates](remove_duplicates.py)
12+
* [Delete Last Occurrence](delete_last_occurrence.py)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Stack():
2+
"""
3+
Stack follows Last-In-First-Out methodology
4+
"""
5+
6+
def __init__(self):
7+
self.entries = []
8+
9+
def size(self):
10+
return len(self.entries)
11+
12+
def push(self, val):
13+
self.entries.append(val)
14+
15+
def pop(self):
16+
if self.size() > 0:
17+
self.entries.pop(self.size() - 1)
18+
19+
20+
21+
22+
23+
24+
25+

0 commit comments

Comments
 (0)