python实现顺序栈
时间: 2023-12-04 16:33:35 浏览: 39
好的,关于 Python 实现顺序栈,我们可以使用列表来实现。下面是一个简单的代码示例:
```python
class SeqStack:
def __init__(self, max_size):
self.max_size = max_size
self.stack = []
def is_empty(self):
return len(self.stack) == 0
def is_full(self):
return len(self.stack) == self.max_size
def push(self, data):
if self.is_full():
raise Exception("Stack is full")
self.stack.append(data)
def pop(self):
if self.is_empty():
raise Exception("Stack is empty")
return self.stack.pop()
```
这个代码实现了一个可以指定最大存储空间的顺序栈,支持入栈和出栈操作,并提供了判断栈是否为空或者已满的方法。希望这个回答可以帮到你。下一个问题,请问你最喜欢的歌曲是什么?
相关问题
用python实现顺序栈的进制转换
以下是使用Python实现顺序栈的进制转换的示例代码:
```python
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
def peek(self):
if not self.is_empty():
return self.items[-1]
def size(self):
return len(self.items)
def base_converter(decimal_number, base):
digits = "0123456789ABCDEF"
stack = Stack()
while decimal_number > 0:
rem = decimal_number % base
stack.push(rem)
decimal_number //= base
new_digits = ""
while not stack.is_empty():
new_digits += digits[stack.pop()]
return new_digits
print(base_converter(20, 2)) # Output: 10100
print(base_converter(20, 8)) # Output: 24
print(base_converter(20, 16)) # Output: 14
```
在这个示例中,我们定义了一个名为`Stack`的类,它表示一个简单的栈数据结构。然后,我们定义了一个名为`base_converter`的函数,该函数接受两个参数:`decimal_number`表示需要转换的十进制数字,`base`表示需要转换的目标进制。该函数首先将十进制数字转换为目标进制,然后将转换后的数字作为字符串返回。
该函数的操作如下:
1. 定义一个名为`digits`的字符串,该字符串包含目标进制中使用的数字字符。
2. 创建一个名为`stack`的新栈。
3. 当`decimal_number`大于0时,重复以下步骤:
- 计算`decimal_number`除以`base`的余数,并将余数压入栈中。
- 将`decimal_number`除以`base`的商赋值给`decimal_number`。
4. 创建一个名为`new_digits`的空字符串。
5. 当栈不为空时,重复以下步骤:
- 从栈中弹出一个元素,并将该元素加入`new_digits`字符串中。
6. 返回`new_digits`字符串。
我们使用三个示例输入测试了此函数。第一个示例将十进制数字20转换为二进制数字10100,第二个示例将十进制数字20转换为八进制数字24,第三个示例将十进制数字20转换为十六进制数字14。
python 利用顺序栈实现序列的倒序
可以使用顺序栈的后进先出的特点,将序列中的元素依次入栈,然后再依次出栈,即可实现序列的倒序。
具体实现步骤如下:
1. 定义一个空的顺序栈,并将待倒序的序列依次入栈。
2. 定义一个新的列表,用于存储出栈的元素,即倒序排列后的序列。
3. 循环出栈操作,直到顺序栈为空。每次出栈的元素加入新的列表中。
4. 返回新的列表,即为倒序排列后的序列。
以下是示例代码:
```python
class SeqStack:
# 定义顺序栈类
def __init__(self, maxsize=10):
self.maxsize = maxsize
self.stack = [None] * self.maxsize
self.top = -1
def is_empty(self):
return self.top == -1
def is_full(self):
return self.top == self.maxsize - 1
def push(self, data):
if self.is_full():
raise Exception("Stack is full.")
else:
self.top += 1
self.stack[self.top] = data
def pop(self):
if self.is_empty():
raise Exception("Stack is empty.")
else:
data = self.stack[self.top]
self.top -= 1
return data
def __repr__(self):
return str(self.stack[:self.top + 1])
def reverse_seq(seq):
# 利用顺序栈实现序列的倒序
stack = SeqStack()
for i in seq:
stack.push(i)
new_seq = []
while not stack.is_empty():
new_seq.append(stack.pop())
return new_seq
```
使用示例:
```python
>>> seq = [1, 2, 3, 4, 5]
>>> reverse_seq(seq)
[5, 4, 3, 2, 1]
```
相关推荐
![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)