判断链表是否按升序排序

WLDLNHK 2020-10-18 02:30:36
#include<iostream>
using namespace std;
struct Node {
double a;
Node* next;
Node(int x) :a(x), next(NULL) {}
};
bool isInOrder(Node* first) {
Node* p = first;
if (p == NULL) return false;
while (p != NULL) {
if (p->a > p->next->a) return false;
p = p->next;
}
return true;
}
int main() {
int n;
double m;
cout << "please input the number of data:";
cin >> n;
cout << "please input the data:";
Node* first, * p,* f;
f = new Node(0);
first = f;
for (int i = 0; i < n; i++) {
cin >> m;
p = new Node(m);
f->next = p;
f = p;
}
first = first->next;
if (isInOrder(first) == true) cout << "This listnode is in right order./n";
else cout << "This listnode is not in right order./n";
}
...全文
397 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-08
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
WLDLNHK 2020-10-20
  • 打赏
  • 举报
回复
引用 2 楼 5250的回复:
while (p != NULL) {
你的这个判断条件 p会走到最后一个节点
此时p->data有值
p->next = NULL
但是你下面的判断条件
if (p->a > p->next->a) return false;
对空指针p-<next去取值 这不就错了吗?

0x00D6266B 处(位于 Project1.exe 中)引发的异常: 0xC0000005 这个错误就是空指针的异常访问
前面的判断条件改一下
while (p -> next!= NULL) {
谢谢,问题已经找到了
WLDLNHK 2020-10-20
  • 打赏
  • 举报
回复
引用 2 楼 5250的回复:
while (p != NULL) {
你的这个判断条件 p会走到最后一个节点
此时p->data有值
p->next = NULL
但是你下面的判断条件
if (p->a > p->next->a) return false;
对空指针p-<next去取值 这不就错了吗?

0x00D6266B 处(位于 Project1.exe 中)引发的异常: 0xC0000005 这个错误就是空指针的异常访问
前面的判断条件改一下
while (p -> next!= NULL) {
谢谢,问题已经找到了
5250 2020-10-19
  • 打赏
  • 举报
回复
while (p != NULL) {
你的这个判断条件 p会走到最后一个节点
此时p->data有值
p->next = NULL
但是你下面的判断条件
if (p->a > p->next->a) return false;
对空指针p-<next去取值 这不就错了吗?

0x00D6266B 处(位于 Project1.exe 中)引发的异常: 0xC0000005 这个错误就是空指针的异常访问
前面的判断条件改一下
while (p -> next!= NULL) {
WLDLNHK 2020-10-18
  • 打赏
  • 举报
回复
帮忙看看,这个哪里出问题了,不是升序的就可以正常输出,升序的就不行了,提示是if (p->a > p->next->a) return false;这句0x00D6266B 处(位于 Project1.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突。真不知道怎么搞了,在网上也查了不少解决方法,都不好使啊
资源下载链接为: https://pan.quark.cn/s/cb9ea81973a3 本项目采用Java语言实现各类经典常用数据结构及对应算法,涵盖链表、栈、队列、树、图等,持续更新中。 结构包含头结点head和大小size,操作包括:链表增删、判空、获取大小、打印输出;删除重复节点、查找倒数第K个元素、反转链表、倒序输出、获取中间节点;判断链表是否有环、节点删除(未知头结点时);判断链表是否相交及查找交点。 结构含栈顶指针top和大小size,操作有:压栈(push)、弹栈(pop)、查看栈顶元素(peek);获取栈大小、判空;以O(1)时间复杂度获取栈最小元素。 含基于数组、链表、栈三种实现,结构包括队头指针head、队尾指针rear和大小size,操作包括:入队(put)、出队(pop)、查看队头元素(peek);获取队列大小、判空。 结构以根结点为核心,操作有:通过广义表字符串构建二叉树(根在前,括号内子树用逗号分隔);层次遍历(辅助队列)、前中后序遍历(递归/非递归,辅助栈,含后序迭代实现);根据遍历结果构建二叉树、复制二叉树;计算高度与节点总数;获取根及孩子节点、以广义表形式打印;判断两棵树是否相等。 基于完全二叉树的最小堆,含存储数组heap[]和大小size,操作包括:堆构建(空堆、基于数组)、插入(堆尾插入后自下而上调整)、删除(堆顶替换后自上而下调整);堆排序(O(nlgn)时间,O(1)空间,不稳定)、堆打印(前序遍历应用)。 中序遍历为升序序列,操作包括:基于数组插入构建;插入、删除(分四类情况)、搜索(O(lgn),均为递归算法);中序遍历、打印(前序遍历应用)。 涵盖直接插入、希尔、直接选择、堆、冒泡、快速、归并、基数排序,分析内容包括:算法思想、分类(插入、选择、交换、归并、分配排序);时间/空间复杂度、稳定性;内部/外部排序特性。堆排序
第0章 Java程序设计基础 1 【习0.1】 实验0.1 哥德巴赫猜想。 1 【习0.2】 实验0.2 杨辉三角形。 1 【习0.3】 实验0.3 金额的中文大写形式。 1 【习0.4】 实验0.4 下标和相等的数字方阵。 1 【习0.5】 实验0.5 找出一个二维数组的鞍点 2 【习0.6】 实验0.6 复数类。 2 【习0.7】 实验0.8 图形接口与实现图形接口的类 2 第1章 绪论 3 【习1.1】 实验1.1 判断数组元素是否已按升序排序。 3 【习1.2】 实验1.3 用递归算法求两个整数的最大公因数。 3 第2章 线性表 5 【习2.1】 习2-5 图2.19的数据结构声明。 5 【习2.2】 习2-6 如果在遍历单链表时,将p=p.next语句写成p.next=p,结果会怎样? 5 【习2.3】 实验2.2 由指定数组中的多个对象构造单链表。 5 【习2.4】 实验2.2 单链表的查找、包含、删除操作详见8.2.1。 5 【习2.5】 实验2.2 单链表的替换操作。 6 【习2.6】 实验2.2 首尾相接地连接两条单链表。 6 【习2.7】 实验2.2 复制单链表。 6 【习2.8】 实验2.2 单链表构造、复制、比较等操作的递归方法。 7 【习2.9】 建立按升序排序的单链表(不带头结点)。 8 【习2.10】 实验2.6 带头结点的循环双链表类,实现线性表接口。 10 【习2.11】 实验2.5 建立按升序排序的循环双链表。 14 第3章 栈和队列 17 【习3.1】 习3-5 栈和队列有何异同? 17 【习3.2】 能否将栈声明为继承线性表,入栈方法是add(0,e),出栈方法是remove(0)?为什么? 17 【习3.3】 能否用一个线性表作为栈的成员变量,入栈方法是add(0,e),出栈方法是remove(0)?为什么? 17 【习3.4】 能否将队列声明为继承线性表,入队方法是add(e),出队方法是remove(0)?为什么? 17 第4章 串 18 【习4.1】 实验4.6 找出两个字符串中所有共同的字符。 18 【习4.2】 习4-9(1) 已知目标串为"abbaba"、模式串为"aba",画出其KMP算法的匹配过程,并给出比较次数。 18 【习4.3】 习4-9(2) 已知target="ababaab"、pattern="aab",求模式串的next数组,画出其KMP算法的匹配过程,并给出比较次数。 18 第5章 数组和广义表 20 【习5.1】 求一个矩阵的转置矩阵。 20 第6章 树和二叉树 21 【习6.1】 画出3个结点的各种形态的树和二叉树。 21 【习6.2】 找出分别满足下面条件的所有二叉树。 21 【习6.3】 输出叶子结点。 21 【习6.4】 求一棵二叉树的叶子结点个数。 22 【习6.5】 判断两棵二叉树是否相等。 22 【习6.6】 复制一棵二叉树。 23 【习6.7】 二叉树的替换操作。 23 【习6.8】 后根次序遍历中序线索二叉树。 24 第7章 图 25 第8章 查找 26 【习8.1】 实验8.1 顺序表的查找、删除、替换、比较操作。 26 【习8.2】 实验8.2 单链表的全部替换操作。 28 【习8.3】 实验8.2 单链表的全部删除操作。 28 【习8.4】 折半查找的递归算法。 29 【习8.5】 二叉排序树查找的递归算法。 29 【习8.6】 二叉排序树插入结点的非递归算法。 30 【习8.7】 判断一棵二叉树是否为二叉排序树。 31 第9章 排序 32 【习9.1】 判断一个数据序列是否为最小堆序列。 32 【习9.2】 归并两条排序的单链表。 32 【习9.3】 说明二叉排序树与堆的差别。 34

65,199

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧