编写一段C语言程序如下,并发出来 1.基于栈的顺序存储结构实现栈的初始化、入栈、出栈、取栈顶元素和判空操作。 2.基于上述栈的基本操作实现将一个十进制整数转换为对应二进制 实验要求: 1.在构建顺序栈的过程中,注意存储空间的动态追加。 2.数值转换问题必须借由栈来完成。
时间: 2024-11-27 08:08:23 浏览: 42
```c
#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;
}
// 入栈操作
void push(Stack *s, int value) {
if (s->top < MAX_SIZE - 1) {
s->data[++s->top] = value;
} else {
printf("Stack overflow.\n");
}
}
// 出栈操作
int pop(Stack *s) {
if (!is_empty(s)) {
return s->data[s->top--];
} else {
printf("Stack underflow.\n");
return -1; // 返回错误码
}
}
// 取栈顶元素
int peek(Stack *s) {
if (!is_empty(s)) {
return s->data[s->top];
} else {
printf("Stack is empty.\n");
return -1; // 返回错误码
}
}
// 主函数示例:将一个十进制整数转换为二进制并打印
int main() {
Stack dec_to_bin_stack;
init(&dec_to_bin_stack);
int decimal_num;
printf("Enter a decimal number: ");
scanf("%d", &decimal_num);
while (decimal_num > 0) {
push(&dec_to_bin_stack, decimal_num % 2);
decimal_num /= 2;
}
while (!is_empty(&dec_to_bin_stack)) {
printf("%d", pop(&dec_to_bin_stack));
}
return 0;
}
```
阅读全文
相关推荐


















