Skip to content

Commit 3d575f7

Browse files
committed
tidy code
1 parent 8531225 commit 3d575f7

File tree

5 files changed

+42
-83
lines changed

5 files changed

+42
-83
lines changed

Stack/linked_stack.py

+31-78
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,26 @@
99

1010
class Node:
1111

12-
def __init__(self, data, next=None):
12+
def __init__(self, data, next_node=None):
1313
self.data = data
14-
self._next = next
14+
self.next_node = next_node
1515

1616

1717
class LinkedStack:
1818
"""A stack based upon singly-linked list.
1919
"""
2020

2121
def __init__(self):
22-
self._top = None
22+
self._head = None
2323
self._size = 0
2424

2525
def __repr__(self):
26-
current = self._top
26+
current = self._head
2727
nums = []
2828
while current:
2929
nums.append(current.data)
30-
current = current._next
31-
ret = ','.join([str(num) for num in nums])
30+
current = current.next_node
31+
ret = ','.join([repr(num) for num in nums])
3232
return f'[{ret}]'
3333

3434
def is_empty(self):
@@ -38,87 +38,40 @@ def size(self):
3838
return self._size
3939

4040
def push(self, item):
41-
new_top = Node(item)
42-
new_top._next = self._top
43-
self._top = new_top
41+
new_head = Node(item)
42+
new_head.next_node = self._head
43+
self._head = new_head
4444
self._size += 1
4545

4646
def pop(self):
4747
if not self._size:
4848
print('Stack Overflow')
4949
else:
50-
item = self._top.data
51-
self._top = self._top._next
50+
item = self._head.data
51+
self._head = self._head.next_node
5252
return item
5353

5454
def top(self):
55+
"""
56+
返回栈顶元素
57+
:return:
58+
"""
5559
if not self._size:
5660
print('Stack Overflow.')
5761
else:
58-
return self._top.data
59-
60-
61-
s = LinkedStack()
62-
print(s.is_empty())
63-
s.push(4)
64-
print(s)
65-
s.push('dog')
66-
print(s)
67-
# print(s.peek())
68-
s.push(True)
69-
print(s)
70-
print(s.size())
71-
print(s.is_empty())
72-
print(s)
73-
74-
# class LinkedStack:
75-
# """
76-
# 基于单链表的栈实现
77-
# """
78-
#
79-
# def __init__(self):
80-
# self._top = None
81-
# self._num = 0
82-
#
83-
# def is_empty(self):
84-
# return self._num == 0
85-
#
86-
# def size(self):
87-
# return self._num
88-
#
89-
# # def __repr__(self):
90-
# # current = self._top
91-
# # nums = []
92-
# # while current:
93-
# # nums.append(current._data)
94-
# # current = current._next
95-
# # return ' '.join(f'{num}' for num in nums)
96-
#
97-
# def push(self, value):
98-
# new_top = Node(value)
99-
# new_top._next = self._top
100-
# self._top = new_top
101-
# self._num += 1
102-
#
103-
# def pop(self):
104-
# if not self._num:
105-
# print('The length of stack is 0.')
106-
# else:
107-
# item = self._top._data
108-
# self._top = self._top.next
109-
# return item
110-
#
111-
#
112-
# if __name__ == '__main__':
113-
# s = LinkedStack()
114-
# print(s.is_empty())
115-
# s.push(4)
116-
# print(s)
117-
# s.push('dog')
118-
# print(s)
119-
# # print(s.peek())
120-
# s.push(True)
121-
# print(s)
122-
# print(s.size())
123-
# print(s.is_empty())
124-
# print(s)
62+
return self._head.data
63+
64+
65+
if __name__ == '__main__':
66+
s = LinkedStack()
67+
print(s.is_empty())
68+
s.push(4)
69+
print(s)
70+
s.push('dog')
71+
print(s)
72+
print(s.top())
73+
s.push(True)
74+
print(s)
75+
print(s.size())
76+
print(s.is_empty())
77+
print(s.pop())

Stack/list_stack.py

+3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
#!/usr/bin/env python
22
# -*- coding: utf-8 -*-
33
# Created by imoyao at 2019/6/10 17:18
4+
"""
5+
此为使用Python的list模拟栈
6+
"""
47

58

69
class Stack:

Stack/readme.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,11 @@
3232
| s.size() | [4,'dog'] | 2 | |
3333

3434
## 代码实现
35-
[基于list实现stack](list_stack.py)
35+
[基于`list`实现`stack`](list_stack.py)
36+
[基于单链表实现`stack`](linked_stack.py)
3637

3738
## 其他
3839
常与另一种有序的线性数据`队列`相提并论。
3940
## 更多
41+
- 中缀表达式转化为后缀表达式
42+
- 中缀表达式转化为前缀表达式

raw/datastructre/linkedlist/linkedlist.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def reverse(self):
8888
return p
8989

9090

91-
###### 实现两个有序的链表合并为一个有序链表
91+
# 实现两个有序的链表合并为一个有序链表
9292

9393
def combine(l1, l2):
9494
if l1 is None and l2 is None:

raw/datastructre/stack/stack.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def pop(self):
6060
return self._data.remove_first()
6161

6262
def peek(self):
63-
if self._data.is_empty(): ####以后在写链表的时候要注意边界情况
63+
if self._data.is_empty(): # 以后在写链表的时候要注意边界情况
6464
return None
6565
return self._data.get_first()
6666

@@ -118,14 +118,14 @@ def __init__(self):
118118
self._stackB = Stack()
119119

120120
def forward(self):
121-
if self._stackB.size() == 0: ###此处是0,原因是
121+
if self._stackB.size() == 0: # 此处是0,原因是
122122
return None
123123
url = self._stackB.pop()
124124
self._stackA.push(url)
125125
return self._stackA.peek()
126126

127127
def back(self):
128-
if self._stackA.size() == 1: ###此处是1 ,原因是退到最后一个页面无法再推
128+
if self._stackA.size() == 1: # 此处是1 ,原因是退到最后一个页面无法再退
129129
return None
130130
url = self._stackA.pop()
131131
self._stackB.push(url)

0 commit comments

Comments
 (0)