例2.9 建立一个带头结点的线性链表,用以存放输人的二进制数,链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。

发布时间 2023-09-11 11:49:48作者: DawnTraveler

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;
    }
}