链表存储二进制,并且把此二进制数加1

来源:互联网 发布:淘宝网店名称大全 编辑:程序博客网 时间:2024/06/07 11:57
#include<iostream>using namespace std;typedef struct Node{int data;struct Node *next;}Node,*LinkList;int CreatLinkList(LinkList L)//尾插法建表{int ch;Node *s;Node *r;r=L;while(true){cin>>ch;if(ch==999)break;else {s=new Node;s->data=ch;r->next=s;r=s;}r->next=NULL;//这句不能少了,少了就会崩溃}return 0;}int add(LinkList L)//加1原则:从地位向高位找第一个出现的0,把此0改为1,然后把后面地位的全部改为0{Node *p,*r;r=L;p=L->next;while(p!=NULL){if(p->data==0)r=p;p=p->next;}if(r!=L)//说明二进制数中有0{r->data=1;while(r->next!=NULL){r->next->data=0;r=r->next;}r->data=0;}else{Node *temp;temp=new Node;temp->next=L->next;r->next=temp;temp->data=1;r=temp->next;while(r!=NULL){r->data=0;r=r->next;}}return 0;}int main(){LinkList L1;L1=new Node;L1->next=NULL;CreatLinkList(L1);add(L1);Node *p;p=L1->next;while(p!=NULL){cout<<p->data<<" ";p=p->next;}return 0;}