Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  link_list_addition.c
Language: C/C++
Code:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

struct node
{
  int data;
  struct node *link;
};

void append(struct node **q)
{
  int num;
  struct node *temp,*r;
  printf("\nEnter the data:");
  scanf("%d",&num);
  if(*q==NULL)
    {
      temp=(struct node *)malloc(sizeof(struct node));
      temp->data=num;
      temp->link=NULL;
      *q=temp;
    }
  else
    {
      temp=*q;
      while(temp->link!=NULL)
        temp=temp->link;
      r=(struct node *)malloc(sizeof(struct node));
      r->data=num;
      r->link=NULL;
      temp->link=r;
    }

}

void append1(struct node **k,int sum)
{
  //  int num;
  struct node *temp,*r;
  //  printf("\nEnter the data:");
  //  scanf("%d",&num);
  if(*k==NULL)
    {
      temp=(struct node *)malloc(sizeof(struct node));
      temp->data=sum;
      temp->link=NULL;
      *k=temp;
    }
  else
    {
      temp=*k;
      while(temp->link!=NULL)
        temp=temp->link;
      r=(struct node *)malloc(sizeof(struct node));
      r->data=sum;
      r->link=NULL;
      temp->link=r;
    }

}

struct node *reverse(struct node **q)
{
  struct node *temp,*r;
  temp=NULL;
  r=NULL;
  while(*q!=NULL)
    {
      r=(*q)->link;
      (*q)->link=temp;
      temp=(*q);
      *q=r;
    }
  return temp;
  //  printf("\nReversed list:\n");
}

void display(struct node *q)
{
  printf("\n");
  while(q!=NULL)
    {
      printf("\t%d",q->data);
      q=q->link;
    }
  printf("\n");
}

struct node *add(struct node **p,struct node **q)
{
  struct node *s;
  s=NULL;
  int sum;
  while(*p!=NULL && *q!=NULL)
    {
      sum=((*p)->data)+((*q)->data);
      append1(&s,sum);
      *p=(*p)->link;
      *q=(*q)->link;
    }
  return s;
}


void main()
{
  struct node *list1,*list2,*rev_list1,*rev_list2,*temp_list,*sum_list;
  list1=NULL;
  list2=NULL;
  rev_list1=NULL;
  rev_list2=NULL;
  temp_list=NULL;
  sum_list=NULL;
  printf("\nAppend the values in list1\n");
  append(&list1);
  append(&list1);
  append(&list1);
  append(&list1);
  printf("\nAppend the values in list2\n");
  append(&list2);
  append(&list2);
  append(&list2);
  rev_list1=reverse(&list1);
  printf("\nReverse list1:\n");
  display(rev_list1);
  rev_list2=reverse(&list2);
  printf("\nReverse list2:\n");
  display(rev_list2);
  temp_list=add(&rev_list1,&rev_list2);
  sum_list=reverse(&temp_list);
  printf("\nFinal list:\n");
  display(sum_list);
}
Comments: