数据结构栈的基本操作代码
时间: 2023-10-11 21:13:34 浏览: 29
栈(Stack)是一种先进后出(Last In First Out, LIFO)的线性数据结构,它只允许在栈顶进行插入和删除操作。下面是栈的基本操作代码:
```python
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[-1]
def size(self):
return len(self.items)
```
- `is_empty()`:判断栈是否为空,如果为空,则返回 `True`,否则返回 `False`。
- `push(item)`:将元素 `item` 压入栈顶。
- `pop()`:弹出栈顶元素,并返回该元素的值。
- `peek()`:返回栈顶元素的值,但不弹出该元素。
- `size()`:返回栈中元素的个数。
相关问题
数据结构顺序栈与链式栈基本操作代码
顺序栈和链式栈都是栈的基本实现方式,它们都有入栈(push)和出栈(pop)这两个基本操作。
1. 顺序栈的基本操作代码:
```python
class SeqStack:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def pop(self):
if len(self.stack) < 1:
return None
return self.stack.pop()
def size(self):
return len(self.stack)
```
在这个代码中,我们定义了一个顺序栈类SeqStack,它有一个列表stack作为存储结构。push方法用于将元素添加到栈顶,pop方法用于移除并返回栈顶元素,size方法用于返回栈的大小。
2. 链式栈的基本操作代码:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedStack:
def __init__(self):
self.head = Node()
def push(self, data):
new_node = Node(data)
new_node.next = self.head.next
self.head.next = new_node
def pop(self):
if self.head.next is None:
return None
else:
popped_node = self.head.next
self.head.next = self.head.next.next
return popped_node.data
def size(self):
count = 0
temp = self.head.next
while temp:
count += 1
temp = temp.next
return count
```
在这个代码中,我们首先定义了一个Node类,每个Node对象都有一个data属性和一个next属性。然后我们定义了一个LinkedStack类,它有一个头节点head。push方法用于在链表的头部添加新节点,pop方法用于移除并返回链表头部的节点,size方法用于返回链表的长度。
数据结构栈的基本操作c++
栈是一种常见的数据结构,它遵循先进后出(LIFO)的原则。在C++中,可以使用以下基本操作来操作栈:
1. 压栈(Push):将元素添加到栈的顶部。
2. 弹栈(Pop):从栈的顶部移除元素。
3. 取栈顶元素(Top):获取栈顶部的元素,但不移除它。
4. 判断栈是否为空(Empty):检查栈是否为空。
5. 获取栈的大小(Size):获取栈中元素的个数。
以下是一个使用C++实现基本栈操作的示例代码:
```cpp
#include <iostream>
#include <stack>
int main() {
std::stack<int> myStack; // 创建一个整数类型的栈
// 压栈
myStack.push(10);
myStack.push(20);
myStack.push(30);
// 弹栈
myStack.pop();
// 取栈顶元素
std::cout << "Top element: " << myStack.top() << std::endl;
// 判断栈是否为空
if (myStack.empty()) {
std::cout << "Stack is empty" << std::endl; } else {
std::cout << "Stack is not empty" << std::endl;
}
// 获取栈的大小
std::cout << "Stack size: " << myStack.size() << std::endl;
return 0;
}
```
这是一个简单的示例,展示了栈的基本操作。你可以根据实际需求进行扩展和修改。希望对你有所帮助!如果有任何疑问,请随时提问。