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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux+shell脚本100,shell脚本(shell编程100例)

    linux+shell脚本100,shell脚本(shell编程100例)ShellScript,Shell脚本与Windows/Dos下的批处理类似,也便是用各类指令预先放入到一个文件中,便利一次性执行的一个程序文件,主要是便利办理员进行设置或许办理用的。可是它比Windows下的批处理更强大,比用其他编程程序修改的程序功率更高,它使用了Linux/Unix下的指令。shell编程100例1、编写helloworld脚本#!/bin/bash#编写helloworld…

    2022年10月3日
    2
  • FreeWebHostingArea_skyscraperpage

    FreeWebHostingArea_skyscraperpagehttp://www.cnblogs.com/skyme/archive/2011/10/26/2223984.html

    2022年9月30日
    2
  • springboot项目启动原理_相关滤波器的基本原理

    springboot项目启动原理_相关滤波器的基本原理一、springboot启动原理及相关流程概览springboot是基于spring的新型的轻量级框架,最厉害的地方当属自动配置。那我们就可以根据启动流程和相关原理来看看,如何实现传奇的自动配置二、springboot的启动类入口用过springboot的技术人员很显而易见的两者之间的差别就是视觉上很直观的:springboot有自己独立的启动类(独立…

    2022年9月12日
    3
  • windows打开远程连接_windows怎么开启远程服务

    windows打开远程连接_windows怎么开启远程服务1.打开dos命令界面使用“Ctrl+R”组合键快速打开cmd窗口,并输入“cmd”命令,打开cmd窗口。2.使用“mysql-uroot-proot”命令可以连接到本地的mysql服务。3.使用“usemysql”命令,选择要使用的数据库,修改远程连接的基本信息,保存在mysql数据库中,因此使用mysql数据库。4.修改前先确认数据库是否已开启远程连接设置:5.使用“GRANTALLPRIVILEGESON.TO‘root’@’%’IDENTIFIEDBY‘

    2022年10月9日
    2
  • 最全企业安全网管工具名单查询_企业网络安全管理要求

    最全企业安全网管工具名单查询_企业网络安全管理要求我在一家医药公司做IT运维,老板喊我做一些企业智能化的工作。我就对这块做了些调研,所以知道哪些产品好用,哪些产品不好用,整理了份名单,分享给大家公司文档加密这块:翼火蛇免费3个点,其他按照15+3/月/终端收费,在做小白鼠实验云子可信-铁卷SaaS版目前是内测阶段,是我们公司目前在使用的,还不错,推荐这个!亿赛通收费标准未知,调研过,不好用,可能需要专业人员帮助员工机器管理的:瑞星安全云终…

    2022年10月4日
    3
  • Eclipse 新手使用教程

    Eclipse 新手使用教程Eclipse是Java的集成开发环境,使用Eclipse编写Java代码更加简单和智能,那我们该如何使用Eclipse编写一个Java程序呢?一、需要在Eclipse官网(https://www.eclipse.org)上下载Eclipse,然后在电脑上安装二、打开Eclipse软件(一)选择一个工作空间的目录,建议不要放在C盘,之后创建的项目都会存放在你所选的目录下,然后点击Launch(二)可以通过Window-ShowView-Console调出控制台,方便查看程序编译时的输..

    2022年6月15日
    64

发表回复

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

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