这2个程序怎么输入和显示结果啊

#include
#include
typedef struct linknode
{
int data;
struct linknode *next;
} node;
void creat()
{
int x,cycle=1;
node *head,*p,*s;

head=(node *)malloc(sizeof(node));
p=head;
while(cycle)
{
scanf("%d",&x);
if(x !=0)
{
s=(node *)malloc(sizeof(node));
s->data=x;
p->next=s;
p=s;
}
else cycle=0;
}
p->next=NULL;
p=head;
head=head->next;
free(p);

p=head;
while(p!=NULL)
{

 printf("   s=%d",p->data);
p=p->next;

}
printf("\n");
return;
}

void main()
{

creat();
printf("********\n");
return ;

}
#include
#include
typedef struct binode{
char data;
struct binode *lchild,*rchild;
}bitnode,*bitree;

bitree create(bitree p)
{
char ch;
scanf("%c",&ch);
if(ch==' ') p=NULL;
else {
p=(bitnode *)malloc(sizeof(bitnode));
p->data=ch;
p->lchild=create(p->lchild);
p->rchild=create(p->rchild);
}
return p;
}

void inorder(bitree p)
/中序遍历二叉树(递归算法)/
{if(p)
{ inorder(p->lchild);
printf("%c ",p->data);
inorder(p->rchild); }
}

void main( )
{ bitree p;
p=create(p);
if(p) inorder(p); printf("\n");
}