Reverse a given Linked List.
Implementation
#include <iostream>
using namespace std;
struct Node
{
int data;
Node *next;
};
void Insert ( Node **head,int d )
{
if ( head==NULL )
{
Node *newNode=new Node;
newNode->data=d;
newNode->next=NULL;
*head=newNode;
}
else
{
Node *newNode=new Node;
newNode->data=d;
newNode->next=*head;
*head = newNode;
}
}
void Display ( Node *head )
{
while ( head!=NULL )
{
if ( head->next!=NULL )
{
cout<<head->data<<"->";
}
else {
cout<<head->data;
}
head=head->next;
}
}
Node * ReverseLinkedList ( Node **head )
{
Node *p,*q,*r;
p=*head;
q= ( *head )->next;
p->next=NULL;
while ( q!=NULL )
{
r=q->next;
q->next=p;
p=q;
q=r;
}
*head=p;
return *head;
}
int main()
{
Node *head=NULL;
Insert ( &head,5 );
Insert ( &head,25 );
Insert ( &head,35 );
Insert ( &head,15 );
Insert ( &head,20 );
Insert ( &head,2 );
Display ( head );
ReverseLinkedList ( &head );
cout<<"\n";
Display ( head );
getchar();
}
Please comment if you find anything incorrect.
Implementation
#include <iostream>
using namespace std;
struct Node
{
int data;
Node *next;
};
void Insert ( Node **head,int d )
{
if ( head==NULL )
{
Node *newNode=new Node;
newNode->data=d;
newNode->next=NULL;
*head=newNode;
}
else
{
Node *newNode=new Node;
newNode->data=d;
newNode->next=*head;
*head = newNode;
}
}
void Display ( Node *head )
{
while ( head!=NULL )
{
if ( head->next!=NULL )
{
cout<<head->data<<"->";
}
else {
cout<<head->data;
}
head=head->next;
}
}
Node * ReverseLinkedList ( Node **head )
{
Node *p,*q,*r;
p=*head;
q= ( *head )->next;
p->next=NULL;
while ( q!=NULL )
{
r=q->next;
q->next=p;
p=q;
q=r;
}
*head=p;
return *head;
}
int main()
{
Node *head=NULL;
Insert ( &head,5 );
Insert ( &head,25 );
Insert ( &head,35 );
Insert ( &head,15 );
Insert ( &head,20 );
Insert ( &head,2 );
Display ( head );
ReverseLinkedList ( &head );
cout<<"\n";
Display ( head );
getchar();
}
Please comment if you find anything incorrect.
No comments:
Post a Comment