在main函数中实现对于输入的任意十进制数字,例如:1234 利用栈存储每个位置上的数字,并输出其逆序:4321。请使用顺序栈实现
时间: 2024-06-10 15:09:34 浏览: 178
十进制转换成八进制
你可以按照以下步骤来实现该功能:
1. 定义一个顺序栈结构,包括栈的最大容量和栈顶指针。
2. 初始化栈,将栈顶指针设置为-1。
3. 读取用户输入的十进制数字。
4. 将数字按位拆分,并依次入栈。
5. 出栈并输出栈中的元素,即可得到逆序输出。
下面是一个C语言的示例代码实现:
```c
#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
// 初始化栈
void initStack(Stack* stack) {
stack->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack* stack) {
return stack->top == -1;
}
// 判断栈是否已满
int isFull(Stack* stack) {
return stack->top == MAX_SIZE - 1;
}
// 元素入栈
void push(Stack* stack, int value) {
if (isFull(stack)) {
printf("Stack is full.\n");
return;
}
stack->top++;
stack->data[stack->top] = value;
}
// 元素出栈
int pop(Stack* stack) {
if (isEmpty(stack)) {
printf("Stack is empty.\n");
return -1;
}
int value = stack->data[stack->top];
stack->top--;
return value;
}
int main() {
Stack stack;
initStack(&stack);
int num;
printf("请输入一个十进制数字:");
scanf("%d", &num);
while (num > 0) {
int digit = num % 10;
push(&stack, digit);
num /= 10;
}
printf("逆序输出:");
while (!isEmpty(&stack)) {
printf("%d", pop(&stack));
}
printf("\n");
return 0;
}
```
运行示例:
```
请输入一个十进制数字:1234
逆序输出:4321
```
阅读全文