描述:建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位,并在此链表上实现对二进制数加1的运算。
分析:
算法描述:
void buildAdd(linklist l){//实现加1运算
node *q,*r,*s;
q=l->next;
r=l;
while(q!=NULL){//找出最后一个值域为0的结点
if(q->data==0)
r-q;
q=q->next;
}
if(r!=l) //链表存在0
r->data=1; //将最后一个值域为0的结点的值域赋值为1
else{ //链表全为1的情况
s=(node*)malloc(sizeof(node));
s->data=1;
s->next==l->next;
l->next=s;
r=s;
}
r=r->next;//找到最后一个0位置变1后,需要将后面的1的位置变为0
while(r!=NULL){
r->data=0;
r=r->next;
}
}