pat-1052 Linked List Sorting (64bit) (25分)

标签: pat甲级  链表  算法  数据结构

pat-1052 Linked List Sorting (64bit) (25分)
在这里插入图片描述

参加晴神的《算法笔记》
大概说几点我遇到的问题以及总结:
1.pat链表内容的题目还是挺常规的,除非是工程应用或者leetcode的题目,它会使用指针实现数组。但是我做到现在,pat的题目都是:思量是链表,但是实现的是静态的方式。(xxx这里我会给一些链表的模板,还是很简单的。这里留一个空)

2.关于代码的一个小细节,因为输入的问题,导入卡了一会

//处理输入 
    for(int i=0;i<n;i++){
        //这里注意:底下两行需要去隔开写,不然cin流一次读入。那么其实第二行并没有更新到。
		cin>>address;
        cin>>Node[address].data>>Node[address].next;
		//地址的点对用的地址 
		Node[address].address=address;
	}

当时是我直接一次性的进行读入,那么结果就会出错。因为第二行的address并没有拿到值。只有在一行结束时,address才确定存在一个数值型数据。

完整的代码如下:

#include <iostream>
#include <algorithm>
using namespace std;
const int N=100005;
struct node{
	int address;
	int data;
	int next;
	bool flag;
}Node[N];
bool cmp(node a,node b){
	//先去判断无效节点,然后对数值进行排序 
	if(a.flag==false||b.flag==false) return a.flag>b.flag;
	else return a.data<b.data;//从小到大进行排序
} 
int main(){
	for(int i=0;i<N;i++){
		Node[i].flag=false;//设置对所有点进行排序
	}
	int n,begin,address;
	cin>>n>>begin;	
	//处理输入 
    for(int i=0;i<n;i++){
        //这里注意:底下两行需要去隔开写,不然cin流一次读入。那么其实第二行并没有更新到。
		cin>>address;
        cin>>Node[address].data>>Node[address].next;
		//地址的点对用的地址 
		Node[address].address=address;
	}
	//起始地址进行遍历 
    int cnt=0,p=begin;
	//对链表开始遍历,然后选取出适合的节点 
	while(p!=-1){
		Node[p].flag=true;//如果没有访问到-1,
		//那么表示的当前的点是有效节点 
		cnt++;
		p=Node[p].next;//更新当前节点的位置 
	}	
	if(cnt==0) cout<<"0 -1";//表示根本没有有效节点 
	else{
		//对所有节点进行排序 
		sort(Node,Node+N,cmp);//对链表的节点进行遍历
		//数组的格式具有要求,现输出一个节点的值 
		printf("%d %05d\n",cnt,Node[0].address);
		for(int i=0;i<cnt;i++){
            //注意下标的位置 
			if(i!=cnt-1){
				printf("%05d %d %05d\n",Node[i].address,Node[i].data,Node[i+1].address);
			}
			else{
				printf("%05d %d -1\n",Node[i].address,Node[i].data);
			}
		} 
	}
	return 0;
} 
版权声明:本文为weixin_44110100原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44110100/article/details/108597723

智能推荐

PAT.A1052 Linked List Sorting

返回目录 样例(可复制) 注意点 本题节点数为0时(即开始地址为start=-1)需要特判输出,本题不会出现开始地址不为-1,但给出的所有节点都没出现开始地址的节点的情况...

PAT-A-1052 Linked List Sorting

//着实被姥姥的测试用例惊叹到。 A linked list consists of a series of structures, which are not necessarily adjacent in memory. We assume that each structure contains an integer key and a Next po...

新发的日常小实验——使用IETester测试不同IE版本的浏览器,测试网页JS的兼容性(console未定义兼容测试)

文章目录 一、痛点:IE兼容测试 二、关于IETester 三、IETester下载 四、写个html测试js的console接口 五、测试结果 六、js兼容处理 一、痛点:IE兼容测试 之前使用.Net的Winform桌面应用框架做了一个PC版的迷你浏览器(使用IE内核),方便拉起网页支付。 有用户反馈打开支付页面报了如下的错:“console”未定义 到底是多么老旧的I...

linux下搭建nginx及配置

文章目录 下载nginx 解压nginx资源包 准备编译环境 安装编译 查找安装路径并启动nginx 浏览器访问 下载nginx 下载地址:https://nginx.org/en/download.html 这里用的是nginx-1.16.1版本 解压nginx资源包 准备编译环境 安装编译 查找安装路径并启动nginx 浏览器访问 http://IP...

猜你喜欢

腾讯云+tipask快速搭建基于laravel的CMS网站

一、购买腾讯云服务器,服务市场->基础环境->选择WordPress平台镜像 二、按照tipask教程安装 tipask官方教程地址https://wenda.tipask.com/article/22 官方教程对新手不太友好,我整理如下: 1.ftp上传文件 云服务器镜像装载完毕后,浏览器访问服务器公网ip,点击获取权限后会下载服务器相关的文件 浏览器访问host url,根据所给的...

ElasticSearch入门教程

什么是ElasticSearch 基于Apache Lucene构建的开源搜索引擎 采用Java编写,提供简单易用的RESTFul API 轻松的横向扩展,可支持BP级的结构化和非结构化的数据处理 可应用场景 海量数据分析引擎 站内搜索引擎 数据仓库 一线公司实际应用场景 英国卫报 - 实时分析公众对文章的回应 维基百科、GitHub-站内实时搜索 百度 - 实时日志监控平台 安装 Windows...

小程序明明已经分包了,为啥没有大小没有变???

为什么要分包 真机预览时出现大于2M,无法预览。 对项目进行规整划分 如何分包 实际操作 先将需要分包的文件拷贝到小程序根目录下 在app.json中配置分包结构(如图) 修改被分包中的引用路径,如图片资源、导航URL 可以设置分包的在哪个页面加载 图中表示在进入login页面进行下载设置的分包,all表示在所有网络下。 失败解决!分包了为啥还是提示大小超过2M 分包的文件内所引用的外部文件也必须...

js pixi框架 极其详细到位(入门)-----转载

pixi是一个js 的轻量级的游戏类库框架,很适用于做H5的一些canvas动画特效。 这篇文章是关于pixi的入门教程 ,里面的讲解非常的到位细致,是我看到过的文章里讲解的算是最好的了。  去年快过年看的教程 ,今天再想看的时候发现没找到,不过经过不懈的搜索还是找到 ,那就赶紧给转过来吧。   pixi(入门) Pixi教程 基于官方教程翻译;水平有限,如有错误欢迎提PR,转...

sklearn支持向量机(SVM)多分类问题

模型 sklearn.svm中的支持向量机: Classify:SVC、nuSVC、LinearSVC Regression:SVR、nuSVR、LinearSVR OneClassSVM 本文采用Classify系列,classify三个模型的区别;参数详解 预处理 建模 训练 多种SVC、核函数对比 对比的结果: 优化linear核函数的SVC的惩罚系数 惩罚系数(C=)越高,对错误分类的惩罚...


http://www.vxiaotou.com