满意答案
h44dkpra
2013.04.20
采纳率:54% 等级:12
已帮助:8452人
#include
#include
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
void InitList(long i,LinkList &list)
{
list=(LinkList)malloc(sizeof(LNode));
list->next=0;
LinkList p;
long t=i;
while(t!=0)
{
p=(LinkList)malloc(sizeof(LNode));
p->data=t%10;
p->next=list->next;
list->next=p;
t=t/10;
}
}
void displaylist(LinkList list)
{
LinkList p=list->next;
while(p)
{
printf("%d",p->data);
p=p->next;
}
printf("\n");
}
void addone(LinkList &list)
{
LinkList p=list->next;
LinkList p1,p2;
//下面这处理全1的情况:
while(p)
{
p1=p;
if(p->data==0) break;
p=p->next;
}
if(p==NULL)
{
LinkList p3=(LinkList)malloc(sizeof(LNode));
p3->data=1;
p3->next=NULL;
p1->next=p3;
return ;
}
//下面是一般的处理情况:
p=list->next;
while(p)
{
p1=p;
p=p->next;
}
if(p1->data+1==1)
{
p1->data+=1;
return ;
}
else if(p1->data+1==2)
{
p=list->next;
while(p)
{
if(p->data==0)
{
p2=p;
}
p=p->next;
}
p2->data=1;
p=p2->next;
while(p)
{
p->data=0;
p=p->next;
}
return ;
}
}
int main()
{
LinkList list;
long i;
scanf("%ld",&i);
if(i==0)
{
printf("你输入的数为:\n%d\n",i);
printf("加1后得:\n1\n");
return 0;
}
InitList(i,list);
printf("你输入的数为:\n");
displaylist(list);
addone(list);
printf("加1后得:\n");
displaylist(list);
return 0;
}
00分享举报