1. Ngăn xếp.
Định nghĩa
Ngăn xếp: Là một loại dữ liệu trừu tượng và các thao tác có thể dùng:
- Push(data): Thêm data vào ngăn xếp
- Top(): Tìm key mới nhất
- Pop(): Trả về và xoá key mới nhất
- Empty(): Kiểm tra ngăn xếp có rỗng không
Ví dụ: Cân bằng ngoặc
Đầu vào: Một chuỗi các ký tự '(', ')', '[', ']'
Đầu ra: Trả về việc dấu ngoặc tròn và dấu ngoặc vuông của chuỗi có cân bằng không.
Pseudocode
IsBalanced(str)
Stack stack
for char in str:
if char in [ '(', '[' ]:
stack.push(char)
else:
if stack.empty(): return False
top = stack.pop()
if top = '(' and char != ')' or top = '[' and char != ']':
return False
return stack.empty()
Stack stack
for char in str:
if char in [ '(', '[' ]:
stack.push(char)
else:
if stack.empty(): return False
top = stack.pop()
if top = '(' and char != ')' or top = '[' and char != ']':
return False
return stack.empty()
Code
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Stack:
def __init__(self):
self.head = None
def print_stack(self):
temp = self.head
while temp is not None:
print(temp.data)
temp = temp.next
def push(self, data_new):
node_new = Node(data_new)
node_new.next = self.head
self.head = node_new
def pop(self):
if self.head is None:
return None
temp = self.head.data
self.head = self.head.next
return temp
def top(self):
return self.head.data
def empty(self):
return self.head is None
class IsBalanced:
def __init__(self, str):
self.str = str
def isbalanced(self):
s = Stack()
for char in self.str:
if char in ['(', '[']:
s.push(char)
else:
if s.empty(): return False
top = s.pop()
if top == '(' and char != ')' or top == '[' and char != ']':
return False
return s.empty()
string = ['(', ')', '[', ']']
I = IsBalanced(string)
print(I.isbalanced())
2. Hàng đợi
Định nghĩa
Ngăn xếp: Là một loại dữ liệu trừu tượng và các thao tác có thể dùng:
- Enqueue(key) : Thêm key vào hàng đợi
- Dequeue : Xoá key và trả về giá trị của nó
- Empty() : Kiểm tra hàng đợi có rỗng không
Không có nhận xét nào:
Đăng nhận xét