编写一个stack栈类
时间: 2023-04-06 11:03:46 浏览: 82
好的,我可以回答这个问题。一个stack栈类可以用以下代码实现:
```
class Stack:
def __init__(self):
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 is_empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
```
这个类包含了常见的栈操作,如push、pop、peek、is_empty和size。您可以使用这个类来创建一个栈对象,并对其进行操作。
相关问题
用c++编写一个stack栈类
好的,我可以回答这个问题。以下是一个简单的用 C 语言编写的 stack 栈类的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
void init(Stack *s) {
s->top = -1;
}
int is_empty(Stack *s) {
return s->top == -1;
}
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
void push(Stack *s, int value) {
if (is_full(s)) {
printf("Stack is full.\n");
exit(1);
}
s->data[++s->top] = value;
}
int pop(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty.\n");
exit(1);
}
return s->data[s->top--];
}
int main() {
Stack s;
init(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
printf("%d\n", pop(&s));
printf("%d\n", pop(&s));
printf("%d\n", pop(&s));
return 0;
}
```
这个 stack 栈类使用了一个结构体来存储栈的数据和栈顶指针。它包含了几个基本的操作,如初始化、判断栈是否为空或已满、入栈和出栈。在主函数中,我们可以看到如何使用这个栈类来进行一些基本的操作。
编写一个C#Stack栈实现十进制向二进制相互转换
好的,以下是一个简单的C#Stack栈实现十进制向二进制转换的代码示例:
```csharp
using System;
using System.Collections;
class DecimalToBinaryConverter {
static void Main(string[] args) {
int decimalNumber = 10; // 要转换的十进制数
Stack binaryStack = new Stack();
while (decimalNumber > 0) {
int remainder = decimalNumber % 2;
binaryStack.Push(remainder);
decimalNumber /= 2;
}
Console.Write("转换后的二进制数为:");
while (binaryStack.Count != 0) {
Console.Write(binaryStack.Pop());
}
}
}
```
这个代码实现了将十进制数 10 转换成二进制数的功能。首先,我们定义了要转换的十进制数为 10,然后创建了一个 Stack 对象 binaryStack 来存储二进制数的每一位。接下来,我们使用一个 while 循环来执行二进制转换的主要逻辑。在循环中,我们首先计算出十进制数的当前位的值,然后将其推入 binaryStack 中。最后,我们将十进制数除以 2,以便进行下一次迭代。
一旦二进制数的每一位都被计算出来并推入了 binaryStack 中,我们使用另一个 while 循环来获取栈中的每一位并打印出来,从而得到最终的二进制数。