In: Computer Science
Can anyone change it to double linked list
#include<stdio.h>
#include<stdlib.h>
#include <iostream>
using namespace std;
struct Node
{
int data;
struct Node* next;
};
void printMiddle(struct Node *head)
{
struct Node *slow_ptr = head;
struct Node *fast_ptr = head;
if (head!=NULL)
{
while (fast_ptr != NULL
&& fast_ptr->next != NULL)
{
fast_ptr = fast_ptr->next->next;
slow_ptr = slow_ptr->next;
}
printf("The middle
element is [%d]\n\n", slow_ptr->data);
}
}
void push(struct Node** head_ref, int new_data)
{
struct Node* new_node =
(struct Node*)
malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = (*head_ref);
(*head_ref) = new_node;
}
void printList(struct Node *ptr)
{
while (ptr != NULL)
{
printf("%d->",
ptr->data);
ptr =
ptr->next;
}
printf("NULL\n");
}
int main()
{
struct Node* head = NULL;
int s;
cout << "enter the size of the linkedlist"
<< endl;
cin >> s;
cout << " Linked list is: " << s
<< endl;
for (int i=0; i<s; i++)
{
int x;
cin>> x;
push(&head,
x);
printList(head);
printMiddle(head);
}
return 0;
}
If You Have Any Doubts Please Comment :-
#include<iostream>
#include<stdlib.h>
using namespace std;
struct Node{
int data;
struct Node*next;
struct Node*prev;
};
void printMiddle(struct Node *head){
struct Node*slow_ptr=head;
struct Node*fast_ptr=head;
if(head!=NULL){
while(fast_ptr!=NULL &&
fast_ptr->next!=NULL){
fast_ptr=fast_ptr->next->next;
slow_ptr=slow_ptr->next;
}
printf("\n\nThe middle element is
[%d]\n\n",slow_ptr->data);
}
}
void push(struct Node** head_ref, int new_data)
{
struct Node* new_node = (struct Node*)malloc(sizeof(struct
Node));
new_node->data = new_data;
new_node->next = (*head_ref);
new_node->prev = NULL;
if ((*head_ref) != NULL)
(*head_ref)->prev = new_node;
(*head_ref) = new_node;
}
void printList(Node* node)
{
Node* last;
cout<<"\nTraversal in forward direction \n";
while (node != NULL)
{
cout<<" "<<node->data<<" ";
last = node;
node = node->next;
}
cout<<"\nTraversal in reverse direction \n";
while (last != NULL)
{
cout<<" "<<last->data<<" ";
last = last->prev;
}
}
int main(){
struct Node*head = NULL;
int s;
cout<<"Enter the size of the
linkedlist"<<endl;
cin>>s;
cout<<"Linkedlist is:"
<<s<<endl;
for(int i=0;i<s;i++){
int x;
cin>>x;
push(&head,x);
printList(head);
printMiddle(head);
}
return 0;
}
Output :-