用C语言编写程序:建立一个带头结点的线性链表,用以存放输入的二进制....

来源:百度知道 编辑:UC知道 时间:2024/06/03 15:40:52
用C语言编写程序:建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。
给出答案的追加分数!!!
你做好给我,行吧?如何把inc多调用几次就可以得出其它的二进制数?自动化就好了,谢谢

请注意:C语言无法输入二进制数,所以我用十进制数输入,但是我把输入的数做为二进制数,你注意输入的数不要太大。
#include <stdio.h>
#include <stdlib.h>

/* 链表结点 */
typedef struct _Node
{
struct _Node *next; /* 指向下一个结点 */
unsigned char bit; /* 当前结点所代表的二进制位 */
} Node;

/* 在链表的结尾添加一个结点 */
void addNode(Node *prior, unsigned char bit)
{
Node *node = (Node *)malloc(sizeof(Node));

node->next = NULL;
node->bit = bit;

prior->next = node;
}

Node* createList(unsigned int value)
{
Node *head = (Node *)malloc(sizeof(Node));
head->next = NULL;

if (value != 0)
{
unsigned int quot; /* 商 */
unsigned int comp; /* 余数 */
Node *node = head;

/* 为value的每个二进制生成一个结点 */
quot = value;
do
{
comp = quot % 10;
quot /= 10;
addNode(node, comp);
node = node->next;
}
while (quot);
}