Sort linked list which is already sorted on absolute values

Sort linked list in absolute values

Here given code implementation process.

//C Program
//Sort linked list which is already sorted on absolute values
#include <stdio.h>
#include <stdlib.h> //for malloc function

//create structure
struct Node
{
  int data;
  struct Node*next;
};

//insert Node element
void insert(struct Node**head,int value)
{
  //Create dynamic node
  struct Node*node=(struct Node*)malloc(sizeof(struct Node));
  if(node==NULL)
  {
    printf("Memory overflow\n");
  }else
  {
    node->data = value;
    node->next = NULL;
    if(*head == NULL)
    {
      *head=node;
    }else
    {
      struct Node*temp = *head;
      //find last node
      while(temp->next != NULL)
      {
        temp = temp->next;
      }
      //add node at last possition
      temp->next = node;
    }
  }
}
void sort(struct Node**head)
{
  if(*head == NULL)
  {
    printf("Empty linked list");
  }
  else
  {
    struct Node*current=*head;

    struct Node*temp=NULL;


    while(current->next!=NULL)
    {
       if(current->data > current->next->data)
       {
        temp=current->next->next;

        current->next->next=*head;

        *head = current->next;

        current->next=temp;
       }
       else
       {
         current=current->next;
       }

    }
  }

}
//Display element of Node
void display(struct Node*temp)
{
  
  if(temp==NULL)
  {
    printf("Empty linked list");
  }
  while(temp!=NULL)
  {
    printf("%d  ",temp->data);
    temp=temp->next;
  }
}
int main()
{
  //create node pointer
  struct Node*head=NULL;

  //insert element of linked list

  insert(&head,0);
  insert(&head,5);
  insert(&head,-5);
  insert(&head,6);
  insert(&head,-7);
  insert(&head,8);
  insert(&head,9);
  insert(&head,-10);
  sort(&head);
  //display all node
  display(head);
  return 0;
}

Output

-10  -7  -5  0  5  6  8  9
//C++ Program 
//Sort linked list which is already sorted on absolute values
#include <iostream>
using namespace std;

//Create structure
struct Node
{
  int data;
  struct Node*next;
};
class LinkedList
{

public:
  Node*head;//head node
  LinkedList();
  void insert(int);
  void display();
  void sort();
};
LinkedList::LinkedList()
{
  head=NULL;
}
//insert node at end of linked list
void LinkedList::insert(int value)
{
  //Create dynamic node
  Node*node=new Node;
  if(node==NULL)
  {
    cout<<"Memory overflow\n";
  }else
  {
    node->data=value;
    node->next=NULL;
    if(head==NULL)
    {
      //base condition
      head=node;
    }else
    {
      Node*temp=head;
      while(temp->next!=NULL)
      {
        temp=temp->next;
      }
      //add newly node at last
      temp->next=node;
    }
  }
}
//display all node value in linked list
void LinkedList:: display()
{
  if(head==NULL)
  {
    cout<<"Empty linked list";
  }
  else
  {
    Node*temp=head;
    cout<<"Linked List : ";
    while(temp!=NULL)
    {
      //print node value
      cout<<temp->data<<" ";
      temp=temp->next;
    }
  }
}
void LinkedList:: sort()
{
  if(head == NULL)
  {
    cout<<("Empty linked list");
  }
  else
  {
    Node*current=head;

    Node*temp=NULL;


    while(current->next!=NULL)
    {
      if(current->data > current->next->data)
      {
        temp=current->next->next;

        current->next->next=head;

        head = current->next;

        current->next=temp;
      }
      else
      {
        current=current->next;
      }
    }
  }
}



int main()
{

  //create object
  LinkedList obj;
  obj.insert(0);
  obj.insert(5);
  obj.insert(-5);
  obj.insert(6);
  obj.insert(-7);
  obj.insert(8);
  obj.insert(9);
  obj.insert(-10);
  obj.sort();

  obj.display();
  return 0;
}

Output

Linked List : -10 -7 -5 0 5 6 8 9
//Java program
//Sort linked list which is already sorted on absolute values
public class LinkedList
{

  static class Node
  {
    int data;
    Node next;
  }
  public Node head;
  //Class constructors
  LinkedList()
  {
    head=null;
  } 
  //insert  element
  public void insert(int value)
  {
    //Create  node
    Node node=new Node();
    node.data=value;
    node.next=null;
    if(head==null) head=node;
    else
    {
      Node temp=head;
      //find last node
      while(temp.next!=null)
      {
        temp=temp.next;
      }
      temp.next=node;
    }
    
  }
  //Display all Linked List elements
  public void display()
  {
    if(head!=null)
    {
      System.out.print("Linked List Element :");
      Node temp=head;
      while(temp!=null)
      {
        System.out.print("  "+temp.data);
        temp=temp.next;
      }
      System.out.println();
    }else
    {
      System.out.println("Empty Linked list"); 
    }
  }
  public void sort()
  {
    if(head == null)
    {
      System.out.println("Empty linked list");
    }
    else
    {
      Node current = head;

      Node temp = null;


      while(current != null && current.next != null)
      {
        if(current.data > current.next.data)
        {
          temp=current.next.next;

          current.next.next=head;

          head = current.next;

          current.next=temp;
        }
        else
        {
          current=current.next;
        }
      }
    }
  }
  public static void main(String[] args) 
  {

    LinkedList obj = new LinkedList();
    obj.insert(0);
    obj.insert(5);
    obj.insert(-5);
    obj.insert(6);
    obj.insert(-7);
    obj.insert(8);
    obj.insert(9);
    obj.insert(-10);
    obj.display();
    obj.sort();

    obj.display();
  }
}

Output

Linked List Element :  0  5  -5  6  -7  8  9  -10
Linked List Element :  -10  -7  -5  0  5  6  8  9
#Python Program 
#Sort linked list which is already sorted on absolute values
class Node:
  def __init__(self,data):
    self.data=data
    self.next=None

#create class Linked    
class LinkedList:
  def __init__(self):
    #Assign default value
    self.head=None

  #insert new node to Linked  
  def insert(self,data):
    node=Node(data)
    if(self.head==None):
      #first element of linked list
      self.head=node
    else:
    
      temp=self.head
      #find middle node of linked list
      while(temp!=None and temp.next!=None ):
        temp=temp.next
      
      #add at last of linked list  
      temp.next=node 
   

  #display all linked list node 
  def display(self):
    temp=self.head
    while(temp!=None):
      print(temp.data,end=" ")
      temp=temp.next
    print()

  def sort(self) :
    if(self.head == None) :
      System.out.println("Empty linked list")
    
    else :
      current = self.head

      temp = None


      while(current != None and current.next != None) :
        if(current.data > current.next.data) :
          temp=current.next.next

          current.next.next=self.head

          self.head = current.next

          current.next=temp
        
        else :
          current=current.next
        


def main():

  #Create Object of class LinkedList
  obj=LinkedList()
  obj.insert(0)
  obj.insert(5)
  obj.insert(-5)
  obj.insert(6)
  obj.insert(-7)
  obj.insert(8)
  obj.insert(9)
  obj.insert(-10)
  obj.display()
  obj.sort()

  obj.display()
if __name__ =="__main__":
  main()

Output

0 5 -5 6 -7 8 9 -10 
-10 -7 -5 0 5 6 8 9 
//C# program
//Sort linked list which is already sorted on absolute values
using System;
public class Node
{
  public int data;
  public Node next;
}
public class LinkedList
{

  public Node head;
  //Class constructors
  LinkedList()
  {
    head=null;
  } 
  //insert  element
  public void insert(int value)
  {
    //Create  node
    Node node=new Node();
    node.data=value;
    node.next=null;
    if(head==null) head=node;
    else
    {
      Node temp=head;
      //find last node
      while(temp.next!=null)
      {
        temp=temp.next;
      }
      temp.next=node;
    }

  }
  //Display all Linked List elements
  public void display()
  {
    if(head!=null)
    {
      Console.WriteLine("Linked List Element :");
      Node temp=head;
      while(temp!=null)
      {
        Console.Write("  "+temp.data);
        temp=temp.next;
      }
      Console.WriteLine();
    }else
    {
      Console.WriteLine("Empty Linked list"); 
    }
  }
  public void sort()
  {
    if(head == null)
    {
      Console.WriteLine("Empty linked list");
    }
    else
    {
      Node current = head;

      Node temp = null;


      while(current != null && current.next != null)
      {
        if(current.data > current.next.data)
        {
          temp=current.next.next;

          current.next.next=head;

          head = current.next;

          current.next=temp;
        }
        else
        {
          current=current.next;
        }
      }
    }
  }
  public static void Main(String[] args) 
  {

    LinkedList obj = new LinkedList();
    obj.insert(0);
    obj.insert(5);
    obj.insert(-5);
    obj.insert(6);
    obj.insert(-7);
    obj.insert(8);
    obj.insert(9);
    obj.insert(-10);
    obj.display();
    obj.sort();

    obj.display();
  }
}

Output

Linked List Element :
  0  5  -5  6  -7  8  9  -10
Linked List Element :
  -10  -7  -5  0  5  6  8  9
<?php
//Php program 
//Sort linked list which is already sorted on absolute values
class Node
{
  public $data;
  public $next;
  function __construct($data)
  {
    $this->data = $data;
    $this->next = NULL;
  }
}
class LinkedList
{

  public $head;
  function __construct()
  {
    $head=NULL;
  }
  /*
  * Append the Given data value at end of linked list
  * Fun : insert
  * Parm: data value
  *@return None
  */
  function insert($data)
  {
    $newNode=new Node($data); 

    if($this->head==NULL)
    {
      $this->head=$newNode;
    }
    else
    {
      $temp=$this->head;

      //find last node of linked list
      while($temp->next!=NULL)
      {
        $temp=$temp->next;
      }
      //add new node to last of linked list
      $temp->next=$newNode;
    }
  }
  //Display all inserted node in linked list
  function display()
  {
    if($this->head==NULL)
    {
      echo "Empty Linked List";
    }
    else
    {
      $temp=$this->head;
      echo "Linked List :";
      while($temp!=NULL)
      {
        //display node value
        echo "  ".$temp->data;
        $temp=$temp->next; //visit to next node
      }
    }   
  }
  function sort()
  {
    if($this->head == NULL)
    {
      echo ("Empty linked list\n");
    }
    else
    {
      $current=$this->head;

      $temp = NULL;


      while($current->next != NULL)
      {
        if($current->data > $current->next->data)
        {
          $temp=$current->next->next;

          $current->next->next=$this->head;

          $this->head = $current->next;

          $current->next=$temp;
        }
        else
        {
          $current=$current->next;
        }
      }
    }
  }



}
function main()
{
  //Make a object of LinkedList class
  $obj= new LinkedList();
  $obj->insert(0);
  $obj->insert(5);
  $obj->insert(-5);
  $obj->insert(6);
  $obj->insert(-7);
  $obj->insert(8);
  $obj->insert(9);
  $obj->insert(-10);
  $obj->sort();

  $obj->display();
}
main();
?>

Output

Linked List :  -10  -7  -5  0  5  6  8  9

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment







© 2021, kalkicode.com, All rights reserved