编写一段关于栈的代码
时间: 2023-08-06 08:11:15 浏览: 36
下面是一个简单的栈的实现,包含基本的入栈、出栈和判断栈是否为空的方法:
```
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 self.is_empty():
raise Exception("Stack is empty")
return self.items.pop()
def peek(self):
if self.is_empty():
raise Exception("Stack is empty")
return self.items[-1]
```
使用方法:
```
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.pop()) # 输出 3
print(stack.peek()) # 输出 2
print(stack.is_empty()) # 输出 False
```
相关问题
编写一段关于栈的C语言代码
下面是一个简单的栈的C语言代码,其中包括入栈、出栈和打印栈中元素的功能:
```c
#include <stdio.h>
#define MAXSIZE 10
int stack[MAXSIZE];
int top = -1;
void push(int item) {
if (top == MAXSIZE - 1) {
printf("Stack overflow\n");
} else {
top++;
stack[top] = item;
printf("%d pushed to stack\n", item);
}
}
int pop() {
if (top == -1) {
printf("Stack underflow\n");
return -1;
} else {
int item = stack[top];
top--;
printf("%d popped from stack\n", item);
return item;
}
}
void printStack() {
if (top == -1) {
printf("Stack is empty\n");
} else {
printf("Stack elements are: ");
for (int i = 0; i <= top; i++) {
printf("%d ", stack[i]);
}
printf("\n");
}
}
int main() {
push(10);
push(20);
push(30);
printStack();
pop();
printStack();
push(40);
printStack();
return 0;
}
```
该代码使用数组实现栈的基本操作,包括入栈、出栈和打印栈中元素。在主函数中,我们演示了如何使用这些操作来操作栈。
编写一段c语言后缀表达式代码
当然,我很乐意为您提供后缀表达式的c语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// 定义栈结构体
typedef struct {
int top;
int data[MAX_SIZE];
} 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 Overflow!\n");
exit(1);
}
s->data[++s->top] = value;
}
// 出栈
int pop(Stack *s) {
if (is_empty(s)) {
printf("Stack Underflow!\n");
exit(1);
}
return s->data[s->top--];
}
// 计算后缀表达式
int evaluate_postfix(char *exp) {
Stack s;
init(&s);
int i, op1, op2, result;
for (i = 0; exp[i] != '\0'; i++) {
switch (exp[i]) {
case '+':
op2 = pop(&s);
op1 = pop(&s);
push(&s, op1 + op2);
break;
case '-':
op2 = pop(&s);
op1 = pop(&s);
push(&s, op1 - op2);
break;
case '*':
op2 = pop(&s);
op1 = pop(&s);
push(&s, op1 * op2);
break;
case '/':
op2 = pop(&s);
op1 = pop(&s);
push(&s, op1 / op2);
break;
default:
push(&s, exp[i] - '0');
break;
}
}
result = pop(&s);
return result;
}
int main() {
char exp[MAX_SIZE];
printf("请输入后缀表达式:");
scanf("%s", exp);
printf("计算结果为:%d\n", evaluate_postfix(exp));
return 0;
}
```
希望这段代码对您有所帮助!