SDUT_2121数据结构实验之链表六:有序链表的建立 (对建立的单项链表结构进行排序)

本文主要是介绍SDUT_2121数据结构实验之链表六:有序链表的建立 (对建立的单项链表结构进行排序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击打开链接

数据结构实验之链表六:有序链表的建立

Time Limit: 1000MS  Memory Limit: 65536KB
Submit  Statistic  Discuss
Problem Description
输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。
Input
第一行输入整数个数N;
第二行输入N个无序的整数。
Output
依次输出有序链表的结点值。
Example Input
6
33 6 22 9 44 5
Example Output
5 6 9 22 33 44
Hint
不得使用数组!
Author
#include<stdio.h>
#include<stdlib.h>
struct vode
{int date;struct vode *next;
};
int main()
{struct vode *head,*tail,*p,*q;head=(struct vode *)malloc(sizeof(struct vode ));head->next=NULL;tail=head;int n,i;scanf("%d",&n);for(i=1;i<=n;i++){p=(struct vode *)malloc(sizeof(struct vode ));p->next=NULL;scanf("%d",&p->date);tail->next=p;//尾插法tail=p;}int k=0;while(k=!k)//首先给k取反,k=1,然后while()语句在判断其是否为1,等于1时才进行循环,不得不说这个这个排序算法太神奇了{p=head->next;q=p->next;while(q){if(p->date<q->date){int t;t=p->date;p->date=q->date;q->date=t;k=0;}//当while(q)时,不进入if判断语句,自然就不能给k赋值为0,(之前的while(k=!k)把k赋值为1,)在下次进入while(k=!k)时自然k就不等于1了,结束循环,(k的精妙)else{p=p->next;q=q->next;}}}p=head->next;int s=0;while(p){if(s==0){printf("%d",p->date);s=1;}else printf(" %d",p->date);p=p->next;}return 0;
}
/*总结:这个对链表数据进行排序的算法思想是首先进入循环体,找到第一组p->date>q->date的数值,先对他们两个进行排序
此时if语句执行完毕,在跳出进行while(q)的判断,显然上次进行if完成后p->date<q->date,所以这次的while(q)进入到else的语句
这时候就在开始进行找,直到找到另一组p->date>q->date的数据进行排序,直到q=NULL时结束内循环,跳出来,再从整个数据的第一组数在进行寻找(之前只要找到一组p->date>q->date
的数据,k就被重新赋值为0了,所以下次的while(k=!k)外循环肯定是成立的,当while(k=!k)不成成立时也就说明整个数据已经被排序完成。)
*/


这篇关于SDUT_2121数据结构实验之链表六:有序链表的建立 (对建立的单项链表结构进行排序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/771912

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图