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)
上一篇 2022年10月11日 下午6:16
下一篇 2022年10月11日 下午6:16


相关推荐

  • MIME协议讲解

    MIME协议讲解MIME 协议 https blog csdn net flfna article details utm medium distribute pc relevant none task blog baidujs 7MIME 协议 详解范例 https blog csdn net weixin article details utm

    2026年3月18日
    2
  • Oracle创建本地数据库实例及配置「建议收藏」

    Oracle创建本地数据库实例及配置「建议收藏」        因为以前一直都是用的mysql的数据库,所以当新工作中用到Oracle数据库的时候,一时还有点不习惯,特别是一直连接的远程数据库,更是麻烦,所以就想在本地创建一个Oracle的数据库,然后导入数据库的备份文件方便使用。然而看似简单的东西,真正动起手来,却也还是花了好一会儿工夫也才解决。所以希望能够把安装的过程记录下来,不仅方便自己以后查阅,也能督促自己开始写博客(3年前就有这样的想…

    2022年5月31日
    134
  • pytest skipif_白盒测试用例

    pytest skipif_白盒测试用例前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

    2022年7月28日
    10
  • Linux安装Anaconda教程

    Linux安装Anaconda教程1 首先上 Linux 官网下载最新对应版本的 Anaconda 安装包链接 Anaconda 官网下载 2 因为我们是在 Linux 系统下安装 Anaconda 所以选择 Linux 平台的 64 位版本 3 打开终端 输入 ls 命令查看当前目录下的文件和文件夹 cd 路径命令可以进入文件夹 lscd 路径 4 用 ls 命令查看当前文件目录 找到安装包如果是图形界面 打开文件管理器 在 Anaconda 安装包目录下右键 在终端打开也可以直接进入目录终端 5 用 sh 命令执行 sh 文

    2026年3月19日
    1
  • Java面向对象程序设计笔记 • 【目录】

    Java面向对象程序设计笔记 • 【目录】持续更新中 我的大学笔记 gt gt gt 章节内容实践练习 Java 面向对象作业目录 作业笔记 第 1 章 Java 面向对象笔记 第 1 章面向对象 第 2 章 Java 面向对象笔记 第 2 章面向对象进阶 第 3 章 Java 面向对象笔记 第 3 章继承和多态 第 4 章 Java 面向对象笔记 第 4 章抽象类和接口 第 5 章 Java

    2026年3月19日
    1
  • 天天网摘——文摘_书签_网址_收藏夹

    天天网摘——文摘_书签_网址_收藏夹http www 365key com Private

    2026年3月20日
    2

发表回复

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

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