Please check this program in java and add your comments if you feel anything
wrong
http://rajeevprasanna.blogspot.com/2011/07/add-two-numbers-stored-in-linked-lists.html

2011/7/18 η!Ƭ!گђ <nitish.ii...@gmail.com>

> #include <stdio.h>
> #include <stdlib.h>
> #include <malloc.h>
>
> struct node
> {
> char ch;
>  struct node *ptr;
> }*tp,*sp;
>
> int c = 0;
> int insert(struct node *list)
> {
> int n,num,hd;
>  scanf("%d",&n);
> hd = n;
> struct node *temp;
>  n--;
>         while(n--)
> {
> scanf("%d",&num);
>  list->ch = num;
> temp = (struct node *)malloc(sizeof(struct node));
> list->ptr = temp;
>  list = list->ptr;
> }
> scanf("%d",&num);
>  list->ch = num;
> return hd;
> }
>
> void add(struct node *list1,struct node *list2)
> {
> if((list1 && list1->ptr) && (list2 && list2->ptr))
> add(list1->ptr,list2->ptr);
>  struct node *temp;
> temp = (struct node *)malloc(sizeof(struct node));
> if((c + (list1->ch + list2->ch)) >= 10){
>  tp->ch = (c + (list1->ch+list2->ch)) -10;
> c = 1;
> tp ->ptr = temp;
>  tp = tp->ptr;
> }
> else{
>  tp->ch = (c + list1->ch + list2->ch);
> c = 0;
> tp->ptr = temp;
>  tp = tp->ptr;
> }
> }
>
> void print(struct node *list)
> {
> if(list->ptr)
> {
> print(list->ptr);
>  printf("%d ",list->ch);
> }
> else if(list->ch)
>  printf("%d ",list->ch);
> }
>
> int main()
> {
> int pos1,pos2,x;
>  struct node *list1,*list2,*temp;
> list1 = (struct node *)malloc(sizeof(struct node));
>  list2 = (struct node *)malloc(sizeof(struct node));
> temp = (struct node *)malloc (sizeof(struct node));
>  sp = (struct node *)malloc(sizeof(struct node));
> sp = temp;
> pos1 = insert(list1);
>  pos2 = insert(list2);
> if(pos1>pos2)
> x = pos1-pos2-1;
>  else
> x = pos2-pos1-1;
>
> while((x--) > 0){
>  temp->ch = 0;
> tp = (struct node *)malloc(sizeof(struct node));
> temp->ptr = tp;
>  temp = temp->ptr;
> }
> if(pos2 > pos1){
>  temp->ch = 0;
> temp->ptr = list1;
> list1 = sp;
>  }
> else if(pos1 > pos2){
> temp->ch =0;
>  temp->ptr = list2;
> list2 = sp;
> }
>  tp = (struct node *)malloc(sizeof(struct node));
> sp = tp;
> add(list1,list2);
>  tp->ch = c;
> print(sp);
> printf("\n");
>  return 0;
> }
>
>
> On Tue, Jul 19, 2011 at 1:10 AM, SkRiPt KiDdIe <anuragmsi...@gmail.com>wrote:
>
>> #include<cstdlib>
>> #include<iostream>
>> using namespace std;
>>
>> struct node{
>>         int val;
>>         node *next;
>>     };
>>
>> node * Input(int n)
>> {
>>     node *temp,*list,*end;
>>
>>     int x;
>>     for(int i=0;i<n;i++)
>>         {
>>                 cin>>x;
>>
>> temp=(node*)malloc(sizeof(node));temp->val=x;temp->next=NULL;
>>
>>                 if(!i)list=end=temp;
>>                 else end=end->next=temp;
>>         }
>>     return list;
>> }
>> void Rev(node *&head,node *add)
>> {
>>     if(!head){head=add;return;}
>>     node *t=head;head=head->next;
>>     Rev(head,t);
>>     t->next=add;
>> }
>> void Show(node *head)
>> {
>>     while(head){cout<<head->val<<" ";head=head->next;}
>>     cout<<"\n\n";
>> }
>> node * Add(node* a, node *b,node *c,int carry)
>> {
>>     node *temp;
>>
>>     if(!a)
>>     {
>>         while(carry)
>>         {
>>                     temp=(node*)malloc(sizeof(node));
>>                     temp->val=carry%10;temp->next=NULL;
>>                     carry/=10;
>>                     c=c->next=temp;
>>         }return c;
>>     }
>>
>>     temp=(node*)malloc(sizeof(node));
>>         temp->val=(a->val+b->val+carry)%10;
>>
>>     if(!c)c=temp;
>>     else c=c->next=temp;
>>
>>     Add(a->next,b->next,c,(a->val+b->val+carry)/10);
>>     return c;
>> }
>> int main()
>> {
>>
>>     node *list1,*list2,*list3=NULL,*temp;
>>
>>     int n1,n2;
>>
>>     cin>>n1;
>>     list1=Input(n1);//Input list 1
>>     cin>>n2;
>>     list2=Input(n2);//Input list 2
>>
>>
>> if(n2>n1)while((n2--)-n1){temp=(node*)malloc(sizeof(node));temp->val=0;temp->next=list1;list1=temp;}
>>     else
>> while((n1--)-n2){temp=(node*)malloc(sizeof(node));temp->val=0;temp->next=list2;list2=temp;}
>>
>>
>>     Rev(list1,NULL);
>>     Rev(list2,NULL);
>>     list3=Add(list1,list2,list3,0);
>>     Rev(list3,NULL);
>>     Show(list3);
>>     return 0;
>> }
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algogeeks@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>



-- 
Thank You
Rajeev Kumar

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to