定义一个顺序栈,并完成实现以下操作 (1)初始化 (2)入栈 (3)出栈 (4)判断栈满 (5)判断栈空 (6)清空栈 (7)显示栈中各元素 (8)十进制到八进制的转换
时间: 2023-06-10 19:08:11 浏览: 66
下面是顺序栈的定义和实现代码,包括所述的所有操作:
```python
class SeqStack:
def __init__(self, max_size):
self.max_size = max_size
self.top = -1
self.stack = [None] * self.max_size
def is_full(self):
return self.top == self.max_size - 1
def is_empty(self):
return self.top == -1
def push(self, data):
if self.is_full():
print("Stack is full")
return False
else:
self.top += 1
self.stack[self.top] = data
return True
def pop(self):
if self.is_empty():
print("Stack is empty")
return None
else:
data = self.stack[self.top]
self.top -= 1
return data
def clear(self):
self.top = -1
def display(self):
if self.is_empty():
print("Stack is empty")
else:
for i in range(self.top, -1, -1):
print(self.stack[i], end=' ')
print()
@staticmethod
def dec_to_oct(dec_num):
stack = SeqStack(100) # 假设八进制数最多100位
while dec_num > 0:
stack.push(dec_num % 8)
dec_num //= 8
oct_num = ''
while not stack.is_empty():
oct_num += str(stack.pop())
return oct_num
```
其中,`max_size` 表示栈的最大容量,`top` 表示栈顶元素的下标,`stack` 是一个列表,用来存储栈中的元素。`is_full` 和 `is_empty` 方法分别用于判断栈是否已满或为空。`push` 和 `pop` 方法分别用于入栈和出栈操作,`clear` 方法用于清空栈,`display` 方法用于显示栈中的元素。`dec_to_oct` 方法是一个静态方法,用于将十进制数转换为八进制数。
以下是使用示例:
```python
# 初始化一个容量为5的顺序栈
stack = SeqStack(5)
# 入栈
stack.push(1)
stack.push(2)
stack.push(3)
stack.push(4)
stack.push(5)
# 尝试再次入栈,此时应该提示栈已满
stack.push(6)
# 显示栈中的元素
stack.display() # 输出:5 4 3 2 1
# 出栈
stack.pop() # 输出:5
# 显示栈中的元素
stack.display() # 输出:4 3 2 1
# 将十进制数转换为八进制数
oct_num = SeqStack.dec_to_oct(123)
print(oct_num) # 输出:173
```
注意:在 Python 中,列表可以作为栈来使用,因此在实际开发中,我们可以直接使用列表来实现栈的功能。这里仅提供一种使用类来实现栈的示例。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)