head.h
#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;
}*looklink;
looklink creat_head();
looklink creat_node();
int looklink_push(looklink l,datatype e);
void output(looklink l);
int looklink_pop(looklink l);
looklink looklink_free(looklink l);
#endif
main.c
#include "head.h"
int main (int argc, const char *argv[])
{
looklink l=creat_head();
int sum;
datatype e;
printf("请输入你要转换的数");
scanf("%d",&sum);
while(sum>0)
{
e=sum%2;
looklink_push(l,e);
sum/=2;
}
output(l);
l=looklink_free(l);
return 0;
}
texh.c
#include"head.h"
/*
* function: 申请空间
* @param [ in] 无
* @param [out]
* @return
*/
looklink creat_head()
{
looklink l=(looklink)malloc(sizeof(struct Node));
if (l==NULL)
return NULL;
l->len=0;
l->next=NULL;
return l;
}
/*
* function: 普通结点
* @param [ in]
* @param [out]
* @return
*/
looklink creat_node()
{
looklink p=(looklink)malloc(sizeof(struct Node));
if (p==NULL)
return NULL;
p->data=0;
p->next=NULL;
return p;
}
/*
* function: 入栈
* @param [ in] 栈 插入的值
* @param [out]
* @return 成功返回0失败返回-1
*/
int looklink_push(looklink l,datatype e)
{
if(l==NULL)
{
printf("入栈失败\n");
return -1;
}
looklink s=creat_node();
if(s==NULL)
return-1;
s->data=e;
s->next=l->next;
l->next=s;
l->len++;
return 0;
}
/*
* function: 遍历
* @param [ in]
* @param [out]
* @return 无
*/
void output(looklink l)
{
puts("");
looklink p=l;
while(p->next!=NULL)
{
p=p->next;
printf("%d\t",p->data);
}
puts("");
}
/*
* function: 出栈
* @param [ in]
* @param [out]
* @return
*/
int looklink_pop(looklink l)
{
if(l==NULL||l->len==0)
{
printf("删除失败\n");
return -1;
}
looklink q=l->next;
printf("出栈的元素 %d\n",q->data);
l->next=q->next;
free(q);
q=NULL;
l->len--;
return 0;
}
/*
* function: 释放
* @param [ in]
* @param [out]
* @return
*/
looklink looklink_free(looklink l)
{
if(l==NULL)
return NULL;
int n=l->len;
for(int i=0;i<n;i++)
{
looklink_pop(l);
}
free(l);
l=NULL;
return l;
}