首页 > 其他分享 >【OJ】链表的按顺序排序

【OJ】链表的按顺序排序

时间:2024-06-11 13:30:30浏览次数:25  
标签:head OJ int List next 链表 排序 data

题目描述 ~~~

将带有头结点的单向链表结点中的数据从小到大排序。

输入描述

第一行输入链表长度;第二行输入链表结点中的数据。

输出描述

排序后的链表(输出头结点,用“Head”表示)

用例输入 1

6
0 10 4 2 8 6

用例输出 1

Head->0->2->4->6->8->10

code:

#include<stdio.h>
#include<malloc.h>
typedef struct node{
	int data;
	struct node *next;
}List;
List *H;
int i=0,m;
List *Creat()
{
    List *head,*s,*n;
    int i=0,k;
    head=(List*)malloc(sizeof(List));
    head->next=NULL;
    n=head;//将指针 n 设置为指向与 head 相同的节点。
	//这很重要,因为 n 将用于遍历链表。
    for(i=0;i<m;i++)
    {
    	s=(List*)malloc(sizeof(List));
        scanf("%d",&k);
        s->data=k;
        n->next=s;//当前节点与新建节点做链接 
        n=s;//更新n指针,即移动到链表的下一个节点 
	}
	n->next=NULL;
	return head; 
}

void fun(List *head)
{
	List *p,*q;
	int temp;
	for(p=head->next;p!=NULL;p=p->next)
	   for(q=head->next;q!=NULL;q=q->next)
	   {
	      if(p->data<q->data)//修改这里的比较条件,如果想从小到大或从大到小 
	      {
	      	temp=p->data;
	      	p->data=q->data;
	      	q->data=temp;
		  }
	   }
	   p=head->next;//存在的原因是,从第一个实际节点开始,也下面的循环相关联 
	   printf("Head");
	   while(p!=NULL)
	   {
	   printf("->%d",p->data);
	   p=p->next;//移动到下一个节点,以便在循环中继续处理下一个节点
       }
}
int main()
{

	scanf("%d",&m);
	int k[m];
    H=Creat();
    fun(H);
	return 0;
 } 

Finally transparent

标签:head,OJ,int,List,next,链表,排序,data
From: https://blog.csdn.net/2302_79917171/article/details/139452108

相关文章

  • 数据结构---排序算法
    个人介绍hellohello~,这里是code袁~......
  • 排序-选择排序
    学习目标:掌握选择排序学习内容:基本思想时间复杂度动画演示代码基本思想:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复上一步,直到所有元素均排序完毕。时间复杂度:O(n^2)动......
  • 排序-快速排序
    学习目标:掌握快速排序学习内容:基本思想动画演示代码时间复杂度基本思想:从数列中挑出一个元素,称为”基准“。重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面。重复上一步,直到所有元素均排序完毕。分区动画演示:快速排序......
  • 【简单介绍下链表基础知识】
    ......
  • 程序设计与算法(三)C++:第四章poj代码
    课程:北京大学程序设计与算法(三)   MOOCOJ:OpenJudge014:MyString这个题需要写的函数有点多我们来分析一下。charw1[200],w2[100]; while(cin>>w1>>w2){ MyStrings1(w1),s2=s1;//构造函数题目有了,不用写//复制构造函数没有,需要写 MyStrings3......
  • 冒泡排序(C语言)
    一.冒泡排序的原理冒泡排序的原理是:从左到右,相邻元素进行比较,以升序为例,第1次遍历将最大的数沉底。经过n次遍历这组元素以升序排列->第1次遍历,两个相邻的数比较大小,若左边的数大于右边的数,则两个元素交换位置,反之,继续向后比较,当第1次遍历结束之后该组元素最大的数就被移动......
  • LibreOJ #10131. 「一本通 4.4 例 2」暗的连锁 题解 树上差分
    暗的连锁题目描述Dark是一张无向图,图中有N个节点和两类边,一类边被称为主要边,而另一类被称为附加边。Dark有N−1条主要边,并且Dark的任意两个节点之间都存在一条只由主要边构成的路径。另外,Dark还有M条附加边。你的任务是把Dark斩为不连通的两部分。一开始Da......
  • 每日一题(LeetCode 34题,在排序数组中查找元素的第一个和最后一个元素)
    题目:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1,-1]。你必须设计并实现时间复杂度为 O(logn) 的算法解决此问题示例1:输入:nums=[5,7,7,8,8,10],......
  • 常用排序
    1冒泡排序(BubbleSort)时间复杂度:\(O(n^2)\)voidmp()//自定义mp()函数{for(inti=1;i<=n-1;i++){for(intj=1;j<=n-i;j++){if(a[j]>a[j+1])//相邻元素比较,若逆序则交换(升序为左大于右,降序反之){sw......
  • mORMot and Open Source friends SynProject Tutorial (SynProject教程)
    mORMotandOpenSourcefriendsSynProjectTutorial--(SynProject教程)第一步本页介绍SynProject的一些典型用法。我们将为mORMot框架本身创建一个源代码存储库和相关的文档。您要求文档,我们将通过SynProject自动生成它!我们需要什么因此,我们在硬盘上的D:\Dev\Lib文件夹中......