Open In App

Check if a Linked List is Pairwise Sorted

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

Given a linked list. The task is to check if the linked list is pairwise sorted or not.

A Linked List is considered pairwise sorted if each successive pair of numbers is in sorted (non-decreasing) order. In the case of odd number of nodes, the last node is ignored and the result is based on the remaining even number of nodes.

Examples: 

Input: List =  10 -> 15 -> 9 -> 9 -> 1 -> 5
Output: YES

Input: List = 10 -> 15 -> 8 -> 9 -> 10 -> 5
Output: NO

Approach: The idea is to traverse the linked list from left to right. Compare nodes pairwise, if any pair violates property, return false. If no pair violates property, return True.

Below is the implementation of above approach: 

C++




// C++ program to check if linked list is
// pairwise sorted
#include <iostream>
 
using namespace std;
 
// A linked list node
struct Node {
    int data;
    struct Node* next;
};
 
// Function to check if linked list is
// pairwise sorted
bool isPairWiseSorted(struct Node* head)
{
    bool flag = true;
 
    struct Node* temp = head;
 
    // Traverse further only if there
    // are at-least two nodes left
    while (temp != NULL && temp->next != NULL) {
        if (temp->data > temp->next->data) {
            flag = false;
            break;
        }
 
        temp = temp->next->next;
    }
 
    return flag;
}
 
// Function to add a node at the
// beginning of Linked List
void push(struct Node** head_ref, int new_data)
{
    /* allocate node */
    struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
 
    /* put in the data */
    new_node->data = new_data;
 
    /* link the old list of the new node */
    new_node->next = (*head_ref);
 
    /* move the head to point to the new node */
    (*head_ref) = new_node;
}
 
// Driver program to test above function
int main()
{
    struct Node* start = NULL;
 
    /* The constructed linked list is:
    10->15->9->9->1->5 */
    push(&start, 5);
    push(&start, 1);
    push(&start, 9);
    push(&start, 9);
    push(&start, 15);
    push(&start, 10);
 
    if (isPairWiseSorted(start))
        cout << "YES";
    else
        cout << "NO";
 
    return 0;
}


Java




// Java program to check if linked list is
// pairwise sorted
class GFG
{
 
// A linked list node
static class Node
{
    int data;
    Node next;
};
static Node start;
 
// Function to check if linked list is
// pairwise sorted
static boolean isPairWiseSorted(Node head)
{
    boolean flag = true;
 
    Node temp = head;
 
    // Traverse further only if there
    // are at-least two nodes left
    while (temp != null && temp.next != null)
    {
        if (temp.data > temp.next.data)
        {
            flag = false;
            break;
        }
 
        temp = temp.next.next;
    }
    return flag;
}
 
// Function to add a node at the
// beginning of Linked List
static void push(Node head_ref, int new_data)
{
     
    /* allocate node */
    Node new_node = new Node();
 
    /* put in the data */
    new_node.data = new_data;
 
    /* link the old list of the new node */
    new_node.next = head_ref;
 
    /* move the head to point to the new node */
    head_ref = new_node;
        start = head_ref;
}
 
// Driver Code
public static void main(String[] args)
{
    start = null;
 
    /* The constructed linked list is:
    10.15.9.9.1.5 */
    push(start, 5);
    push(start, 1);
    push(start, 9);
    push(start, 9);
    push(start, 15);
    push(start, 10);
 
    if (isPairWiseSorted(start))
        System.out.println("YES");
    else
        System.out.println("NO");
    }
}
 
// This code is contributed by PrinciRaj1992


Python




# Python program to check if linked list is
# pairwise sorted
 
# Linked List node
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None
         
start = None
 
# Function to check if linked list is
# pairwise sorted
def isPairWiseSorted(head) :
 
    flag = True
 
    temp = head
 
    # Traverse further only if there
    # are at-least two nodes left
    while (temp != None and temp.next != None) :
     
        if (temp.data > temp.next.data) :
            flag = False
            break
         
        temp = temp.next.next
     
    return flag
 
# Function to add a node at the
# beginning of Linked List
def push(head_ref, new_data) :
 
    global start
    # allocate node
    new_node = Node(0)
 
    # put in the data
    new_node.data = new_data
 
    # link the old list of the new node
    new_node.next = head_ref
 
    # move the head to point to the new node
    head_ref = new_node
    start = head_ref
 
# Driver Code
start = None
 
# The constructed linked list is:
# 10.15.9.9.1.5
push(start, 5)
push(start, 1)
push(start, 9)
push(start, 9)
push(start, 15)
push(start, 10)
 
if (isPairWiseSorted(start)) :
    print("YES")
else:
    print("NO")
     
# This code is contributed by Arnab Kundu


C#




// C# program to check if linked list is
// pairwise sorted
using System;
class GFG
{
 
// A linked list node
public class Node
{
    public int data;
    public Node next;
};
static Node start;
 
// Function to check if linked list is
// pairwise sorted
static Boolean isPairWiseSorted(Node head)
{
    Boolean flag = true;
 
    Node temp = head;
 
    // Traverse further only if there
    // are at-least two nodes left
    while (temp != null && temp.next != null)
    {
        if (temp.data > temp.next.data)
        {
            flag = false;
            break;
        }
 
        temp = temp.next.next;
    }
    return flag;
}
 
// Function to add a node at the
// beginning of Linked List
static void push(Node head_ref, int new_data)
{
     
    /* allocate node */
    Node new_node = new Node();
 
    /* put in the data */
    new_node.data = new_data;
 
    /* link the old list of the new node */
    new_node.next = head_ref;
 
    /* move the head to point to the new node */
    head_ref = new_node;
    start = head_ref;
}
 
// Driver Code
public static void Main(String[] args)
{
    start = null;
 
    /* The constructed linked list is:
    10.15.9.9.1.5 */
    push(start, 5);
    push(start, 1);
    push(start, 9);
    push(start, 9);
    push(start, 15);
    push(start, 10);
 
    if (isPairWiseSorted(start))
        Console.WriteLine("YES");
    else
        Console.WriteLine("NO");
    }
}
 
// This code is contributed by Rajput-Jiv


Javascript




<script>
 
      // JavaScript program to check if linked list is
      // pairwise sorted
      // A linked list node
      class Node {
        constructor() {
          this.data = 0;
          this.next = null;
        }
      }
      var start = null;
 
      // Function to check if linked list is
      // pairwise sorted
      function isPairWiseSorted(head) {
        var flag = true;
 
        var temp = head;
 
        // Traverse further only if there
        // are at-least two nodes left
        while (temp != null && temp.next != null) {
          if (temp.data > temp.next.data) {
            flag = false;
            break;
          }
 
          temp = temp.next.next;
        }
        return flag;
      }
 
      // Function to add a node at the
      // beginning of Linked List
      function push(head_ref, new_data) {
        /* allocate node */
        var new_node = new Node();
 
        /* put in the data */
        new_node.data = new_data;
 
        /* link the old list of the new node */
        new_node.next = head_ref;
 
        /* move the head to point to the new node */
        head_ref = new_node;
        start = head_ref;
      }
 
      // Driver Code
      start = null;
 
      /* The constructed linked list is:
    10.15.9.9.1.5 */
      push(start, 5);
      push(start, 1);
      push(start, 9);
      push(start, 9);
      push(start, 15);
      push(start, 10);
 
      if (isPairWiseSorted(start)) document.write("YES");
      else document.write("NO");
       
</script>


Output

YES

Complexity Analysis:

  • Time Complexity: O(n)
  • Auxiliary Space: O(1)


Last Updated : 22 Dec, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads