用链栈编写进制转换 c语言
时间: 2024-06-15 20:07:57 浏览: 103
链栈 进制转换
链栈是一种基于链表实现的栈结构,它可以用于进制转换。下面是使用链栈编写进制转换的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈节点结构
typedef struct Node {
int data;
struct Node* next;
} Node;
// 初始化链栈
void initStack(Node** top) {
*top = NULL;
}
// 判断链栈是否为空
int isEmpty(Node* top) {
return top == NULL;
}
// 入栈操作
void push(Node** top, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = *top;
*top = newNode;
}
// 出栈操作
int pop(Node** top) {
if (isEmpty(*top)) {
printf("Stack is empty.\n");
return -1;
}
int value = (*top)->data;
Node* temp = *top;
*top = (*top)->next;
free(temp);
return value;
}
// 进制转换函数
void convert(int num, int base) {
Node* top;
initStack(&top);
while (num != 0) {
push(&top, num % base);
num /= base;
}
printf("转换结果为:");
while (!isEmpty(top)) {
printf("%d", pop(&top));
}
printf("\n");
}
int main() {
int num, base;
printf("请输入要转换的十进制数:");
scanf("%d", &num);
printf("请输入目标进制:");
scanf("%d", &base);
convert(num, base);
return 0;
}
```
以上代码实现了一个简单的进制转换程序,用户可以输入一个十进制数和目标进制,程序将使用链栈进行转换并输出结果。
阅读全文