例2.9 建立一个带头结点的线性链表,用以存放输人的二进制数,链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。
1.题目
例2.9建立一个带头结点的线性链表,用以存放输人的二进制数,链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。
2.算法分析
3.代码
/* 二进制加1 */
void BinAdd(LinkList l) {
int temp;
Node *pa = l->next, *pb, *s;
while (pa) {
if (pa->num == 0) pb = pa;
pa = pa->next;
}
if (pb) {
pb->num = 1;
pb = pb->next;
while (pb) {
pb->num = 0;
pb = pb->next;
}
} else {
s = (Node *) malloc(sizeof(Node));
s->num = 1;
s->next = l->next;
l->next = s;
}
}