老师讲完栈之后给留了一道题,要求我们用栈把十进制转换为二进制。大体思路就是十进制数取余二,然后把余数放进栈中。然后再把栈输出,代码如下
#include <stdio.h>
#include <stdlib.h>
typedef struct linkedstack{
int data;
struct linkedstack* next;
}linked;
void TypeChange(int num);
int main(){
int num;
scanf("%d", &num);
TypeChange(num);
return 0;
}
void TypeChange(int num){
linked *s, *p;
s = (linked*)malloc(sizeof(linked));
s->next = NULL;
int length = 1, a;
while (num != 0){
a = num % 2;
num /= 2;
p = (linked*)malloc(sizeof(linked));
if (!p)
return 0;
p->data = a;
p->next = s->next;
s->next = p;
}
p = s->next;
while (p != NULL){
printf("%d", p->data);
p = p->next;
}
}