在main函数中实现十进制到2进制转换输出:输入N,输出N的2进制代码。请使用链式栈实现。
时间: 2024-09-30 19:04:15 浏览: 36
在C语言中,你可以使用链式栈(也称为链表)来实现十进制到二进制的转换。链式栈的优势在于它可以动态地添加和删除元素,而不需要预先确定栈的大小。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点结构
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建一个新的节点
Node* newNode(int value) {
Node* node = (Node*)malloc(sizeof(Node));
node->data = value;
node->next = NULL;
return node;
}
// 初始化链式栈
void initStack(Node** head) {
*head = NULL;
}
// 入栈操作
void push(Node** head, int value) {
Node* newNode = newNode(value);
if (*head == NULL) {
*head = newNode;
} else {
newNode->next = *head;
*head = newNode;
}
}
// 出栈并返回顶部元素
int pop(Node** head) {
if (*head == NULL) {
printf("Stack is empty.\n");
return -1;
}
int topValue = (*head)->data;
Node* temp = *head;
*head = (*head)->next;
free(temp);
return topValue;
}
// 十进制转二进制
void decimalToBinary(int n) {
Node* stack = NULL;
while (n > 0) {
push(&stack, n % 2);
n /= 2;
}
// 输出二进制序列
while (stack != NULL) {
printf("%d", pop(&stack));
}
}
int main() {
int num;
printf("请输入一个十进制整数: ");
scanf("%d", &num);
decimalToBinary(num);
printf("\n");
return 0;
}
阅读全文