建立一个栈 输入
时间: 2023-09-16 22:08:53 浏览: 48
好的,我可以帮你建立一个栈。以下是一个基于 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 self.is_empty():
return None
return self.items.pop()
def peek(self):
if self.is_empty():
return None
return self.items[-1]
def size(self):
return len(self.items)
```
你可以通过以下代码创建一个栈对象,然后向栈中添加元素:
```python
my_stack = Stack()
my_stack.push(1)
my_stack.push(2)
my_stack.push(3)
```
你可以使用 `pop()` 方法从栈中移除元素,并使用 `peek()` 方法查看栈顶的元素。`size()` 方法可以返回栈的大小。
相关问题
C语言建立顺序栈,根据输入的栈中元素个数n和各元素值建立一个顺序栈,并输出栈中各元素值。
下面是一个简单的C语言程序,用于建立顺序栈,根据输入的元素数量和值。程序使用数组来实现栈数据结构。
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义栈的最大容量
typedef struct{
int data[MAXSIZE]; // 存储栈中元素的数组
int top; // 栈顶指针
}SqStack;
void InitStack(SqStack *s){ // 初始化栈
s->top = -1;
}
int Push(SqStack *s, int x){ // 入栈操作
if(s->top == MAXSIZE - 1){ // 栈已满
return 0;
}
s->data[++s->top] = x; // 栈顶指针加1,将元素压入栈顶
return 1;
}
int Pop(SqStack *s, int *x){ // 出栈操作
if(s->top == -1){ // 栈已空
return 0;
}
*x = s->data[s->top--]; // 取出栈顶元素,栈顶指针减1
return 1;
}
int main(){
SqStack s;
InitStack(&s); // 初始化栈
int n, x;
printf("请输入栈中元素个数n:");
scanf("%d", &n);
printf("请输入栈中各元素值:\n");
for(int i = 0; i < n; i++){
scanf("%d", &x);
Push(&s, x); // 入栈
}
printf("栈中各元素值为:");
while(Pop(&s, &x)){ // 出栈并输出元素值
printf("%d ", x);
}
printf("\n");
return 0;
}
```
程序首先定义了一个SqStack结构体,包含一个数组data和一个整型变量top,用于存储栈中元素和栈顶指针。InitStack函数用于初始化栈,将栈顶指针top设为-1。Push函数实现入栈操作,当栈已满时返回0,否则将元素压入栈顶,并将栈顶指针加1。Pop函数实现出栈操作,当栈已空时返回0,否则将栈顶元素取出,并将栈顶指针减1。
在main函数中,程序首先调用InitStack函数初始化栈。然后通过scanf函数读入栈中元素个数n和各元素值,并使用Push函数将元素压入栈中。最后使用Pop函数出栈并输出栈中各元素值。
建立一个栈,输入输出功能,10进制数专为二进制,8进制数输出,基于c语言
好的,以下是一个基于 C 语言的栈的实现示例,实现了输入输出功能,并且可以将输入的十进制数转换为二进制数,输出的是八进制数:
```c
#include <stdio.h>
#define STACK_SIZE 20
struct Stack {
int top;
int items[STACK_SIZE];
};
void init_stack(struct Stack *s) {
s->top = -1;
}
int is_empty(struct Stack *s) {
return s->top == -1;
}
int is_full(struct Stack *s) {
return s->top == STACK_SIZE - 1;
}
void push(struct Stack *s, int item) {
if (is_full(s)) {
printf("Stack overflow!\n");
return;
}
s->items[++s->top] = item;
}
int pop(struct Stack *s) {
if (is_empty(s)) {
printf("Stack underflow!\n");
return -1;
}
return s->items[s->top--];
}
int peek(struct Stack *s) {
if (is_empty(s)) {
printf("Stack underflow!\n");
return -1;
}
return s->items[s->top];
}
void decimal_to_binary(int decimal) {
struct Stack s;
init_stack(&s);
while (decimal > 0) {
int remainder = decimal % 2;
push(&s, remainder);
decimal /= 2;
}
printf("Binary: ");
while (!is_empty(&s)) {
printf("%d", pop(&s));
}
printf("\n");
}
void decimal_to_octal(int decimal) {
struct Stack s;
init_stack(&s);
while (decimal > 0) {
int remainder = decimal % 8;
push(&s, remainder);
decimal /= 8;
}
printf("Octal: ");
while (!is_empty(&s)) {
printf("%d", pop(&s));
}
printf("\n");
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
decimal_to_binary(decimal);
decimal_to_octal(decimal);
return 0;
}
```
你可以通过以下命令编译和运行程序:
```
gcc stack.c -o stack
./stack
```
然后输入一个十进制数即可看到输出的二进制数和八进制数。
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20210720083543.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)