作业:进制转换
自定义函数:
#include "head.h"
linkstack create_node()
{
linkstack l=(linkstack)malloc(sizeof(struct Node));
if(l==NULL)
return NULL;
l->len=0;
l->next=NULL;
return l;
}
linkstack create_Node()
{
linkstack p=(linkstack)malloc(sizeof(struct Node));
if(p==NULL)
return NULL;
p->data=0;
p->next=NULL;
return p;
}
int linkstack_push(linkstack l,datatype e)
{
if(l==NULL)
{
printf("插入失败\n");
return -1;
}
linkstack s=create_Node();
if(s==NULL)
return -1;
s->data=e;
s->next=l->next;
l->next=s;
l->len++;
return 0;
}
int linkstack_pop(linkstack l)
{
if(l==NULL||l->len==0)
{
printf("删除失败\n");
return -1;
}
linkstack q=l->next;
printf("出栈的元素是:%d",q->data);
l->next=q->next;
free(q);
q=NULL;
return 0;
}
void output(linkstack l)
{
puts("");
linkstack p=l;
while(p->next!=NULL)
{
p=p->next;
printf("%d\t",p->data);
}
puts("");
}
int two_change(linkstack l,int n)
{
if(l==NULL)
return -1;
while(n>0)
{
int i=n%2;
linkstack_push(l,i);
output(l);
n=n/2;
}
linkstack_pop(l);
output(l);
return 0;
}
主函数:
#include "head.h"
int main(int argc, const char *argv[])
{
linkstack l=create_node();
int n;
printf("请输入一位十进制数:");
scanf("%d",&n);
two_change(l,n);
return 0;
}
头文件:
#ifndef _HEAD_H
#define _HEAD_H
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef int datatype;
typedef struct Node
{
union{
int len;
datatype data;
};
struct Node *next;
}*linkstack;
linkstack create_node();
linkstack create_Node();
int linkstack_push(linkstack l,datatype e);
int linkstack_pop(linkstack l);
void output(linkstack l);
int two_change(linkstack l,int n);
#endif
运行效果: