判断一个非空单链表是否是递增有序的

直接附上代码,不理解请看置逆那篇,链接:https://www.cnblogs.com/biaobiao88/p/12042132.html

#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef struct
{
    int len;
    int *next;
}node;

//判断一个非空单链表是否是递增有序的
void Inceart(node *list)
{
    int flag = 0;
    for(int i = 0;i < list->len;i++)
    {
        if(list->next[i] > list->next[i + 1])
        {
            flag = 1;
            break;
        }
    }
    if(flag == 1)
    {
        cout << "此非空单链表不是递增有序的" << endl;
        return ;
    }
    if(flag == 0)
    {
        cout << "此非空单链表是递增有序的" << endl;
        return ;
    }
}

signed main()
{
    node *list;
    list = (node *)malloc(sizeof(node));
    cout << "输入顺序表长度:";
    cin >> list->len;
    list->next = (int *)malloc(sizeof(int)*list->len);

    cout << "输入顺序表元素:";
    for(int i = 0;i < list->len;i++)
        cin >> list->next[i];

    Inceart(list);
    free(list->next);   free(list);
    return 0;
}

原文地址:https://www.cnblogs.com/biaobiao88/p/12042888.html

时间: 2024-12-09 09:47:26

判断一个非空单链表是否是递增有序的的相关文章

数据结构与算法基础之非循环单链表创建和链表遍历

1 #include<stdio.h> 2 #include<malloc.h> 3 #include<stdlib.h> 4 //函数声明 5 PNODE create_list();//返回值是链表头结点的地址 6 void traverse_list(PNODE pHead); 7 8 typedef struct Node{ 9 int data;//数据域 10 struct Node * pNext;//指针域 11 }NODE,*PNODE;//NODE等

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以假设除了数字 0 之外,这两个数都不会以 0 开头. 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807 来源:力扣(LeetCode)链接:https://leetcode-c

位运算-异或运算-只出现一次的数字-给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 示例: 输入: [2,2,1] 输出: 1 输入: [4,1,2,1,2] 输出: 4 GO: func singleNumber(nums []int) int { var num int for i := 0; i < len(nums); i++ { num = num ^ nums[i]; } return num; } PHP: class Solution { /** * @par

Python 实现一个全面的单链表

前言 实现清单 链表实现 总结 前言 算法和数据结构是一个亘古不变的话题,作为一个程序员,掌握常用的数据结构实现是非常非常的有必要的. 实现清单 实现链表,本质上和语言是无关的.但是灵活度却和实现它的语言密切相关.今天用Python来实现一下,包含如下操作: ['addNode(self, data)'] ['append(self, value)'] ['prepend(self, value)'] ['insert(self, index, value)'] ['delNode(self,

时间复杂度为O(n)的非递归单链表反转【算法导论课后题】

单链表反转:1->2->3->4... 思路:先将1指向3,2指向1,结果为2->1->3->4,然后循环将3插入到2之前 <span style="font-size:18px;">void reverseLinkedList(List head) { List tmp,p; if(head==null) { return ; } tmp=head->next; while(tmp->next !=null){ p=tmp-

python小练习:给定一个非空且为正整数的列表 按重复次数 降序排列输出

假设有个列表  a=[1,1,1,2,2,4,5,5,5,5] (非空且为正整数) 那么根据要求 最终输出的形式为  5,1,2,4  (按重复次数 降序排列输出) 代码实现及解释: a=[1,1,1,2,2,4,5,5,5,5]num=[] for i in a: s = a.count(i) num.append(s)#取出数字出现的次数 放进num中 num1 = sorted(num,reverse=True)# 降序排列num 并赋值给num1num2=list(set(num1))#

C#控制台基础 directory删除一个非空的文件夹

1 删除的文件夹 2 代码 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 8 namespace directory创建一个文件夹 9 { 10 class Program 11 { 12 static void Main(string[] args)

数据结构与算法基础之非循环单链表节点的操作

插入节点 1 //写法一: 2 r = p->pNext; //r为临时变量 3 p->pNext = q; //q为要插入的节点地址 4 q->next = r; 5 6 7 //写法二: 8 q->pNext = p->pNext; //将原来指向下一节点的指针域赋值给插入的节点的指针域 9 p->pNext = q; //原来的节点的指针域被赋值了插入的节点的地址 删除节点 1 r = p->pNext; 2 //将要删除的节点的地址赋值给临时变量,方便最后

线性数据结构案例4 —— 合并两个有序的单链表 合并之后依然有序

一.介绍 emsp; 我们定义一个新链表然后,将两个链表的元素依次比较,放入比较最小的放到新链表前面. 二.代码 public static Node mergeByOrder(Node l1, Node l2) { if(l1.next == null || l2.next == null) { return l1.next == null ? l2 : l1; } Node newLinkedHead = new Node(0, ""); l1 = l1.next; // 头节点没