stack代码
时间: 2023-07-02 11:04:30 浏览: 52
下面是一个简单的栈的实现代码,使用 Python 语言实现:
```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()`:检查栈是否为空。
- `push(item)`:将一个新元素压入栈。
- `pop()`:弹出栈顶元素,并返回该元素。
- `peek()`:返回栈顶元素,但不弹出它。
- `size()`:返回栈中元素的数量。
相关问题
torch.stack代码演示
当使用`torch.stack`时,你可以将多个张量沿着一个新的维度进行堆叠。下面是一个简单的代码演示:
```python
import torch
# 创建两个张量
tensor1 = torch.tensor([1, 2, 3])
tensor2 = torch.tensor([4, 5, 6])
# 使用torch.stack将两个张量堆叠在一起
stacked_tensor = torch.stack([tensor1, tensor2])
print(stacked_tensor)
```
输出:
```
tensor([[1, 2, 3],
[4, 5, 6]])
```
在这个例子中,我们创建了两个张量`tensor1`和`tensor2`,它们的形状都是`(3,)`。然后我们使用`torch.stack`将这两个张量堆叠在一起,得到一个形状为`(2, 3)`的新张量`stacked_tensor`。在新的张量中,第一行是`tensor1`的值,第二行是`tensor2`的值。
你可以根据需要在`torch.stack`中传入更多的张量,它们的形状应该是一样的。这个函数的默认行为是在新的第0维度上进行堆叠,但你也可以通过指定`dim`参数来选择其他维度进行堆叠。例如,`torch.stack([tensor1, tensor2], dim=1)`将在第1维度上进行堆叠。
stack的c语言代码
以下是一个简单的堆栈(stack)的 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义堆栈最大容量
// 堆栈结构体定义
struct Stack {
int top; // 标记栈顶位置
int data[MAXSIZE]; // 数据数组
};
// 初始化堆栈
void initStack(struct Stack *s) {
s->top = -1; // 初始化栈顶位置为-1
}
// 判断堆栈是否为空
int isEmpty(struct Stack *s) {
return s->top == -1; // 栈顶位置为-1表示为空
}
// 判断堆栈是否已满
int isFull(struct Stack *s) {
return s->top == MAXSIZE - 1; // 栈顶位置为 MAXSIZE-1 表示已满
}
// 压入数据
int push(struct Stack *s, int x) {
if (isFull(s)) { // 如果堆栈已满则无法压入数据
printf("The stack is full.\n");
return 0;
} else {
s->data[++s->top] = x; // 栈顶位置加 1 并将数据压入堆栈
return 1;
}
}
// 弹出数据
int pop(struct Stack *s) {
if (isEmpty(s)) { // 如果堆栈为空则无法弹出数据
printf("The stack is empty.\n");
return 0;
} else {
return s->data[s->top--]; // 栈顶位置减 1 并弹出数据
}
}
// 获取栈顶元素
int top(struct Stack *s) {
if (isEmpty(s)) { // 如果堆栈为空则无栈顶元素
printf("The stack is empty.\n");
return 0;
} else {
return s->data[s->top]; // 直接返回栈顶元素
}
}
// 输出堆栈所有数据
void printStack(struct Stack *s) {
if (isEmpty(s)) {
printf("The stack is empty.\n");
} else {
printf("The stack is: ");
for (int i = 0; i <= s->top; i++) {
printf("%d ", s->data[i]);
}
printf("\n");
}
}
// 主函数
int main() {
struct Stack s;
initStack(&s); // 初始化堆栈
push(&s, 1);
push(&s, 2);
push(&s, 3);
printStack(&s); // 输出堆栈所有数据
printf("The top element is: %d\n", top(&s)); // 获取栈顶元素
pop(&s);
printStack(&s);
return 0;
}
```
这段代码演示了如何使用结构体实现一个简单的堆栈,并提供了基本的操作函数,如初始化堆栈、压入数据、弹出数据、获取栈顶元素等。