| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 819 人关注过本帖
标题:用线性表存放二进制数,每个节点存放一个二进制位,最后实现二进制数加一
只看楼主 加入收藏
humeng
Rank: 1
等 级:新手上路
帖 子:18
专家分:4
注 册:2016-10-10
结帖率:40%
收藏
 问题点数:0 回复次数:4 
用线性表存放二进制数,每个节点存放一个二进制位,最后实现二进制数加一
#include<stdio.h>
#include<stdlib.h>
typedef struct aa
{
    int data;
    struct aa *prior,*next;
}LinkList;
LinkList *Int()
{
    LinkList *head,*s,*r;
    head=(LinkList*)malloc(sizeof(LinkList));
    r=head;
    int a;
    scanf("%d",&a);
    while(a!=2)
    {
        s=(LinkList*)malloc(sizeof(LinkList));
        s->data=a;
        r->next=s;
        s->prior=r;
        r=s;
        scanf("%d",&a);
    }
    r->next=head;
    head->prior=r;
    return head;
}
LinkList *sum1(LinkList *L)
{
    LinkList *p,*r;
    r=L;
    p=L->prior;
    int sum;
    sum=p->data+1;
    while(sum==2)
    {
        if(p!=L)
        {
            p->data=0;
            p=p->prior;
        }
        sum=p->data+1;
    }
    return r;
}
int main()
{
    LinkList *H,*G,*p;
    H=Int();
    G=sum1(H);
    p=H->next;
    for(;p!=G;p=p->next)
        printf("%d",p->data);
    printf("\n");
    return 0;
}
//我输入一个二进制数后,不知道为什么显示不出结果,求大神指点错误
搜索更多相关主题的帖子: include return 二进制 线性表 
2016-10-11 21:12
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:0 
1 1 0 0 2
你是输入整数,
空格隔开

11002这个串用scanf("%c",ch);输入
'1'转换成1就行了
2016-10-11 21:47
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:0 
LinkList *sum1(LinkList *L)
{
    LinkList *p,*r;
    r=L;
    p=L->prior;
    int sum;
    sum=p->data+1;//还有最后一位是0,根本没有把1加上去
    while(sum==2)
    {
        if(p!=L)
        {
            p->data=0;
            p=p->prior;
        }
        sum=p->data+1;
    }
    return r;
}
2016-10-11 21:50
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
typedef struct aa
{
    int data;
    struct aa *prior,*next;
}LinkList;
LinkList *Int()
{
    LinkList *head,*s,*r;
    head=(LinkList*)malloc(sizeof(LinkList));
    r=head;
    char a;
    scanf("%c",&a);
    while(a!='2')
    {
        s=(LinkList*)malloc(sizeof(LinkList));
        s->data=a-'0';
        r->next=s;
        s->prior=r;
        r=s;
        scanf("%c",&a);
    }
    r->next=head;
    head->prior=r;
    return head;
}
LinkList *sum1(LinkList *L)
{
    LinkList *p,*r;
    r=L;
    p=L->prior;
    int sum;
    sum=p->data+1;
    while(sum==2)
    {
        if(p!=L)
        {
            p->data=0;
            p=p->prior;
        }
        sum=p->data+1;
    }
    p->data = sum;
    return r;
}
int main()
{
    LinkList *H,*G,*p;
    H=Int();
    G=sum1(H);
    p=H->next;
    for(;p!=G;p=p->next)
        printf("%d",p->data);
    printf("\n");
    return 0;
}
2016-10-11 21:52
humeng
Rank: 1
等 级:新手上路
帖 子:18
专家分:4
注 册:2016-10-10
收藏
得分:0 
回复 4楼 word123
谢谢大神,我明白了
2016-10-13 13:06
快速回复:用线性表存放二进制数,每个节点存放一个二进制位,最后实现二进制数加 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014002 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved