#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.