链栈实现十进制转换二进制
时间: 2023-09-23 21:07:27 浏览: 161
利用栈来实现10进制到2进制的转换
链栈是一种基于链表实现的栈,可以用来实现十进制转换为二进制的功能。具体实现步骤如下:
1. 定义链栈的节点结构体,包含数据域和指针域。
```
typedef struct Node{
int data;
struct Node *next;
}Node,*Stack;
```
2. 定义链栈的初始化函数,将栈顶指针初始化为 NULL。
```
void InitStack(Stack *s){
*s = NULL;
}
```
3. 定义链栈的入栈函数,将新元素插入到栈顶。
```
void Push(Stack *s, int data){
Node *p;
p = (Node*)malloc(sizeof(Node));
p -> data = data;
p -> next = *s;
*s = p;
}
```
4. 定义链栈的出栈函数,删除栈顶元素并返回其值。
```
int Pop(Stack *s){
Node *p;
int data;
if(*s == NULL)
return 0;
p = *s;
*s = p -> next;
data = p -> data;
free(p);
return data;
}
```
5. 定义十进制转换为二进制的函数,将十进制数不断除以2,并将余数入栈,直到商为0为止。然后依次出栈,并输出即可。
```
void DecToBin(int n){
Stack s;
int remainder;
InitStack(&s);
while(n != 0){
remainder = n % 2;
Push(&s, remainder);
n = n / 2;
}
while(s != NULL){
printf("%d", Pop(&s));
}
}
```
以上就是使用链栈实现十进制转换为二进制的全部过程。
阅读全文