给定一个链表,任务是检查链表是否按降序排序?
例子 :
Input : 8 -> 7 -> 5 -> 2 -> 1
Output : Yes
Explanation :
In given linked list, starting from head,
8 > 7 > 5 > 2 > 1. So, it is sorted in reverse order
Input : 24 -> 12 -> 9 -> 11 -> 8 -> 2
Output : No
迭代方法:从头到尾遍历链表。对于每个新遇到的元素,请检查node-> data> node-> next-> data 。如果为True,则对每个节点执行相同操作,否则返回0并打印“ No”。
C++
// C++ program to check Linked List is sorted
// in descending order or not
#include
using namespace std;
/* Linked list node */
struct Node
{
int data;
struct Node* next;
};
// function to Check Linked List is
// sorted in descending order or not
bool isSortedDesc(struct Node *head)
{
if (head == NULL)
return true;
// Traverse the list till last node and return
// false if a node is smaller than or equal
// its next.
for (Node *t=head; t->next != NULL; t=t->next)
if (t->data <= t->next->data)
return false;
return true;
}
Node *newNode(int data)
{
Node *temp = new Node;
temp->next = NULL;
temp->data = data;
}
// Driver program to test above
int main()
{
struct Node *head = newNode(7);
head->next = newNode(5);
head->next->next = newNode(4);
head->next->next->next = newNode(3);
isSortedDesc(head) ? cout << "Yes" :
cout << "No";
return 0;
}
Java
// Java program to check Linked List is sorted
// in descending order or not
class GFG
{
/* Linked list node */
static class Node
{
int data;
Node next;
};
// function to Check Linked List is
// sorted in descending order or not
static boolean isSortedDesc(Node head)
{
if (head == null)
return true;
// Traverse the list till last node and return
// false if a node is smaller than or equal
// its next.
for (Node t = head; t.next != null; t = t.next)
if (t.data <= t.next.data)
return false;
return true;
}
static Node newNode(int data)
{
Node temp = new Node();
temp.next = null;
temp.data = data;
return temp;
}
// Driver Code
public static void main(String[] args)
{
Node head = newNode(7);
head.next = newNode(5);
head.next.next = newNode(4);
head.next.next.next = newNode(3);
if(isSortedDesc(head))
System.out.println("Yes");
else
System.out.println("No");
}
}
// This code is contributed by 29AjayKumar
Python3
# Python3 program to check Linked List is sorted
# in descending order or not
''' Linked list Node '''
class Node:
def __init__(self, data):
self.data = data;
self.next = next;
# function to Check Linked List is
# sorted in descending order or not
def isSortedDesc(head):
if (head == None):
return True;
# Traverse the list till last Node and return
# False if a Node is smaller than or equal
# its next.
while(head.next != None):
t = head;
if (t.data <= t.next.data):
return False;
head = head.next
return True;
def newNode(data):
temp = Node(0);
temp.next = None;
temp.data = data;
return temp;
# Driver Code
if __name__ == '__main__':
head = newNode(7);
head.next = newNode(5);
head.next.next = newNode(4);
head.next.next.next = newNode(3);
if (isSortedDesc(head)):
print("Yes");
else:
print("No");
# This code is contributed by 29AjayKumar
C#
// C# program to check Linked List is sorted
// in descending order or not
using System;
class GFG
{
/* Linked list node */
public class Node
{
public int data;
public Node next;
};
// function to Check Linked List is
// sorted in descending order or not
static bool isSortedDesc(Node head)
{
if (head == null)
return true;
// Traverse the list till last node and
// return false if a node is smaller than
// or equal to its next.
for (Node t = head;
t.next != null; t = t.next)
if (t.data <= t.next.data)
return false;
return true;
}
static Node newNode(int data)
{
Node temp = new Node();
temp.next = null;
temp.data = data;
return temp;
}
// Driver Code
public static void Main(String[] args)
{
Node head = newNode(7);
head.next = newNode(5);
head.next.next = newNode(4);
head.next.next.next = newNode(3);
if(isSortedDesc(head))
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
}
// This code is contributed by Rajput-Ji
C++
// C++ program to recursively check Linked List
// is sorted in descending order or not
#include
using namespace std;
/* Linked list node */
struct Node
{
int data;
struct Node* next;
};
// function to Check Linked List is
// sorted in descending order or not
bool isSortedDesc(struct Node *head)
{
// Base cases
if (head == NULL || head->next == NULL)
return true;
// Check first two nodes and recursively
// check remaining.
return (head->data > head->next->data &&
isSortedDesc(head->next));
}
Node *newNode(int data)
{
Node *temp = new Node;
temp->next = NULL;
temp->data = data;
}
// Driver program to test above
int main()
{
struct Node *head = newNode(7);
head->next = newNode(5);
head->next->next = newNode(4);
head->next->next->next = newNode(3);
isSortedDesc(head) ? cout << "Yes" :
cout << "No";
return 0;
}
Java
// Java program to recursively check Linked List
// is sorted in descending order or not
class GfG {
/* Linked list node */
static class Node
{
int data;
Node next;
}
// function to Check Linked List is
// sorted in descending order or not
static boolean isSortedDesc(Node head)
{
// Base cases
if (head == null || head.next == null)
return true;
// Check first two nodes and recursively
// check remaining.
return (head.data > head.next.data && isSortedDesc(head.next));
}
static Node newNode(int data)
{
Node temp = new Node();
temp.next = null;
temp.data = data;
return temp;
}
// Driver program to test above
public static void main(String[] args)
{
Node head = newNode(7);
head.next = newNode(5);
head.next.next = newNode(4);
head.next.next.next = newNode(3);
if(isSortedDesc(head) == true)
System.out.println("Yes");
else
System.out.println("No");
}
}
Python3
# Python3 program to recursively check
# Linked List is sorted in descending
# order or not
# Linked list node
class Node:
def __init__(self, data):
self.data = data
self.next = None
# Function to Check Linked List is
# sorted in descending order or not
def isSortedDesc(head):
# Base cases
if (head == None or head.next == None):
return True
# Check first two nodes and recursively
# check remaining.
return (head.data > head.next.data and
isSortedDesc(head.next))
def newNode(data):
temp = Node(data)
return temp
# Driver code
if __name__=="__main__":
head = newNode(7)
head.next = newNode(5)
head.next.next = newNode(4)
head.next.next.next = newNode(3)
if isSortedDesc(head):
print("Yes")
else:
print("No")
# This code is contributed by rutvik_56
C#
// C# program to recursively check Linked List
// is sorted in descending order or not
using System;
class GfG
{
/* Linked list node */
public class Node
{
public int data;
public Node next;
}
// function to Check Linked List is
// sorted in descending order or not
static bool isSortedDesc(Node head)
{
// Base cases
if (head == null || head.next == null)
return true;
// Check first two nodes and recursively
// check remaining.
return (head.data > head.next.data &&
isSortedDesc(head.next));
}
static Node newNode(int data)
{
Node temp = new Node();
temp.next = null;
temp.data = data;
return temp;
}
// Driver code
public static void Main(String[] args)
{
Node head = newNode(7);
head.next = newNode(5);
head.next.next = newNode(4);
head.next.next.next = newNode(3);
if(isSortedDesc(head) == true)
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
}
// This code contributed by Rajput-Ji
输出:
Yes
时间复杂度:O(N),其中N是链表的长度。
递归方法:
递归检查节点->数据>节点->下一个->数据,如果不是,则返回0,这是我们从递归中得出的终止条件,否则递归调用下一个节点的Check_List函数。
C++
// C++ program to recursively check Linked List
// is sorted in descending order or not
#include
using namespace std;
/* Linked list node */
struct Node
{
int data;
struct Node* next;
};
// function to Check Linked List is
// sorted in descending order or not
bool isSortedDesc(struct Node *head)
{
// Base cases
if (head == NULL || head->next == NULL)
return true;
// Check first two nodes and recursively
// check remaining.
return (head->data > head->next->data &&
isSortedDesc(head->next));
}
Node *newNode(int data)
{
Node *temp = new Node;
temp->next = NULL;
temp->data = data;
}
// Driver program to test above
int main()
{
struct Node *head = newNode(7);
head->next = newNode(5);
head->next->next = newNode(4);
head->next->next->next = newNode(3);
isSortedDesc(head) ? cout << "Yes" :
cout << "No";
return 0;
}
Java
// Java program to recursively check Linked List
// is sorted in descending order or not
class GfG {
/* Linked list node */
static class Node
{
int data;
Node next;
}
// function to Check Linked List is
// sorted in descending order or not
static boolean isSortedDesc(Node head)
{
// Base cases
if (head == null || head.next == null)
return true;
// Check first two nodes and recursively
// check remaining.
return (head.data > head.next.data && isSortedDesc(head.next));
}
static Node newNode(int data)
{
Node temp = new Node();
temp.next = null;
temp.data = data;
return temp;
}
// Driver program to test above
public static void main(String[] args)
{
Node head = newNode(7);
head.next = newNode(5);
head.next.next = newNode(4);
head.next.next.next = newNode(3);
if(isSortedDesc(head) == true)
System.out.println("Yes");
else
System.out.println("No");
}
}
Python3
# Python3 program to recursively check
# Linked List is sorted in descending
# order or not
# Linked list node
class Node:
def __init__(self, data):
self.data = data
self.next = None
# Function to Check Linked List is
# sorted in descending order or not
def isSortedDesc(head):
# Base cases
if (head == None or head.next == None):
return True
# Check first two nodes and recursively
# check remaining.
return (head.data > head.next.data and
isSortedDesc(head.next))
def newNode(data):
temp = Node(data)
return temp
# Driver code
if __name__=="__main__":
head = newNode(7)
head.next = newNode(5)
head.next.next = newNode(4)
head.next.next.next = newNode(3)
if isSortedDesc(head):
print("Yes")
else:
print("No")
# This code is contributed by rutvik_56
C#
// C# program to recursively check Linked List
// is sorted in descending order or not
using System;
class GfG
{
/* Linked list node */
public class Node
{
public int data;
public Node next;
}
// function to Check Linked List is
// sorted in descending order or not
static bool isSortedDesc(Node head)
{
// Base cases
if (head == null || head.next == null)
return true;
// Check first two nodes and recursively
// check remaining.
return (head.data > head.next.data &&
isSortedDesc(head.next));
}
static Node newNode(int data)
{
Node temp = new Node();
temp.next = null;
temp.data = data;
return temp;
}
// Driver code
public static void Main(String[] args)
{
Node head = newNode(7);
head.next = newNode(5);
head.next.next = newNode(4);
head.next.next.next = newNode(3);
if(isSortedDesc(head) == true)
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
}
// This code contributed by Rajput-Ji
输出:
Yes
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。