C语言-链表排序_单链表的排序c语言

C语言-链表排序_单链表的排序c语言C语言-链表排序题目描述已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。输入第一行,a、b两个链表元素的数量N、M,用空格隔开。接下来N行是a的数据然后M行是b的数据每行数据由学号和成绩两部分组成输出按照学号升序排列的数据样例输入235100689382495210样例输出210382…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

C语言-链表排序

题目描述

已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。

输入

第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成

输出

按照学号升序排列的数据

样例输入

2 3
5 100
6 89
3 82
4 95
2 10

样例输出

2 10
3 82
4 95
5 100
6 89

My first try on Linkedlist, quite hard for me at first
especially the beginning part
also pointer is a hard part for I havn’t understood yet
BUT PRACTICE PAYS
I finally get to know it

#include<cstdio>
#include<cstdlib>
typedef struct student{ 
   //定义结构 
	int num;
	int sco;
	struct student *next;
}stu;

stu *creat(int n){ 
   //创建链表 
	stu *head,*node,*end;
	head=(stu*)malloc(sizeof(stu));
	end=head;
	for(int i=0;i<n;i++){ 
   
		node=(stu*)malloc(sizeof(stu));
		scanf("%d %d",&node->num,&node->sco);
		end->next=node;
		end=node;
	}
	end->next=NULL;
	return head;
}

stu *link(stu *a,stu*b)//链接 
{ 
   
	stu *p=a;
	while(p->next!=NULL){ 
   
		p=p->next;
	}
	p->next=b->next;
	return a;
}

void linksort(struct student *p){ 
   //排序 
	int tnum,tsco,k=0,i=1;
	 
	struct student *p1;
	p1=p;
	while(i!=0){ 
   
	    while(p1->next!=NULL){ 
   
	        if(p1->num>p1->next->num)  { 
   
	           tnum=p1->num;
	           p1->num=p1->next->num;
	           p1->next->num=tnum;
	 
	           tsco=p1->sco;
	           p1->sco=p1->next->sco;
	           p1->next->sco=tsco;
	           k++;
	        }
	        p1=p1->next;
	    }
	    p1=p;
	    if(k>0){ 
   
			k=0;
		}
	    else i=0;
	}
}

void print(stu *a)//输出 
{ 
   
	stu *p=a;
	while(p->next!=NULL){ 
   
		printf("%d %d\n",p->num,p->sco);
		p=p->next;
	}
}
int main()
{ 
   
	int n,m;
	scanf("%d %d",&n,&m);
	stu *a=creat(n);
	stu *b=creat(m);
	stu *p=link(a,b);
	linksort(p);
	print(p);
	return 0;
} 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183087.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CDMA是什么网络类型_TD_LTE移动电话机

    CDMA是什么网络类型_TD_LTE移动电话机GSM全球移动通信系统(GlobalSystemforMobileCommunications),缩写为GSM,由欧洲电信标准组织ETSI制订的一个数字移动通信标准。它的空中接口采用时分多址技术。自90年代中期投入商用以来,被全球超过100个国家采用。GSM标准的无处不在使得在移动电话运营商之间签署”漫游协定”后用户的国际漫游变得很平常。GSM较之它以前的标准最大的不同是它的信令和语音信道都是数字式的,因此GSM被看作是第二代(2G)移动电话系统。GSM系统主要由移动台…

    2022年10月3日
  • Lamda表达式详解

    Lamda表达式详解Lamda表达式1、λ希腊字母表中排序第十一位的字母,英语名称为Lamda2、避免匿名内部类定义过多3、可以让你的代码看起来很简洁4、去掉了一堆没有意义的代码,留下核心的逻辑3、其实质属于函数式编程的概念(params)->expression[表达式](params)->statement[语句](params)->{statements}a->System.out.println(“ilikelamda–>”+a)newTh

    2022年6月13日
  • Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)

    Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)

    2021年12月17日
  • Android Application Thread CPU GC Operatiing and OOM Question 0603-随手笔记

    Android Application Thread CPU GC Operatiing and OOM Question 0603-随手笔记

    2022年1月13日
  • WeakHashMap

    WeakHashMapWeakHashMap,此种Map的特点是,当除了自身有对key的引用外,此key没有其他引用那么此map会自动丢弃此值,见实例:此例子中声明了两个Map对象,一个是HashMap,一个是WeakHashMap,同时向两个map中放入a、b两个对象,当HashMap&nbsp;remove掉a并且将a、b都指向nu…

    2022年5月31日
  • 使用javascript下载网络图片「建议收藏」

    使用javascript下载网络图片「建议收藏」**因为某些原因需要使用js下载网站上的图片,查了万恶的某度,结果解决方案都是一样的,试了试,果然不行。于是乎,上stackoverflow一查,答案就出来了。直接上代码,很简单,答案使用jquery,改成原生js也不难的**functiondownloadImage(src){vara=$("&lt;a&gt;&lt;/a&gt;").attr("href",…

    2022年6月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号