| |
GeekInterview.com > Placement Papers > Aztec Systems > C
| Print | |
Question: Write a program to reverse a linked list
|
| July 07, 2009 06:34:21 |
#3 |
| pranjal5215 |
Member Since: July 2008 Total Comments: 2 |
RE: Write a program to reverse a linked list |
This is the recursive version of the program.
#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); }
node* reverse_recurse(node* cur,node* start)/*reverse linked list recursively*/ { if(cur->next==NULL) { start->next=cur; return cur; } else { reverse_recurse(cur->next,start)->next=cur; } return cur; } int main(void) { node* start; start=(node *)malloc(sizeof(node)); init(start); int i=0; for(i=20;i>=0;i--) addnode(start,i); print(start); reverse_recurse(start->next,start)->next=NULL; print(start); printf("n"); return 0; }
|
| |
Back To Question | |