GeekInterview.com
   Home |  Tech FAQ  |   Interview Questions |  Placement Papers |  Tech Articles |  Learn |  Freelance Projects |  Online Testing |  Geeks Talk |  Job Postings |  Knowledge Base | Site Search |  Add/Ask Question

  GeekInterview.com  >  Placement Papers  >  Aztec Systems  >  C

 Print  |  
Question:  Write a program to reverse a linked list



August 08, 2008 06:05:38 #2
 pranjal5215   Member Since: July 2008    Total Comments: 2 

RE: Write a program to reverse a linked list
 
this is a complete program to reverse a linkked list in C.
first node is allocated memory but dosent contain any data.

#include<stdio.h>
#include<stdlib.h>
struct list
{
    int month;
    struct list *next;
};
typedef struct list node;

void init(node* record)
{
    record->next=NULL;
}
void addnode(node* record,int d)
{
    node* fresh;
    fresh=(node *)malloc(sizeof(node));
    fresh->month=d;
    fresh->next=record->next;
    record->next=fresh;
}
void print(node *record)
{
    node* temp;
    temp=(node *)malloc(sizeof(node));
    for(temp=record->next;temp;temp=temp->next)
        printf(" %d",temp->month);
}
void reverse(node* record)
{
    node* temp;node* temp1;node* temp2;
    temp=(node *)malloc(sizeof(node));
    temp1=(node *)malloc(sizeof(node));
    temp2=(node *)malloc(sizeof(node));
    temp=record;temp1=temp->next;temp2=temp1->next;
    temp->next->next=NULL;
    while(temp2!=NULL)
    {
        temp=temp1;
        temp1=temp2;
        temp2=temp1->next;
        temp1->next=temp;
    }
    record->next=temp1;
}
int main(void)
{
    node* start;
    node* start1;
    start=(node *) malloc(sizeof(node));
    init(start);
    int i=0;
    for(i=10;i>=0;i--)
        addnode(start,i);
    print(start);
    reverse(start);
    printf("n");
    print(start);
    return 0;
}
     

 

Back To Question