二进制加一的实现问题~~谢谢了
题目要求使用链表存储输入的二进制数,实现对其加一的操作!但是输出的却不是加一的答案~
请大家帮忙看看实现加一操作的函数Increase有什么问题啊?
谢谢了
#include<stdio.h>
#include<malloc.h>
typedef struct Node
{
char elem;
struct Node *next;
}Node,*BinList;
BinList Init(BinList L)
{
L=(BinList)malloc(sizeof(Node));
L->next=NULL;
return L;
}
BinList Create(BinList L)
{
Node *p,*q;
int num;//这儿用int
p=L;
while(scanf("%c",&num)!=EOF)
{
q=(Node *)malloc(sizeof(Node));
q->elem=num;
q->next=NULL;
p->next=q;
p=p->next;
}
return L;
}
BinList Increase(BinList L)
{
Node *p,*q;
p=L->next;
while(p!=NULL)
{
if(p->elem=='0')
q=p;
p=p->next;
}
q->elem='1';
p=q;
p=p->next;
while(p!=NULL)
{
p->elem='0';
p=p->next;
}
return L;
}
void print(BinList L)
{
Node *p;
p=L->next;
while(p)
{
printf("%c",p->elem);
p=p->next;
}
}
int main()
{
BinList L;
L=Init(L);
L=Create(L);
L=Increase(L);
print(L);
getch();
return 0;
}