• A1052 Linked List Sorting (25分)


    一、技术总结

    1. 这个也是一个链表类题目,主要是在结构提上的设计,可以设计一个flag参数用于记录真实有效的结点。
    2. 然后就是根据题目要求进行排序,输出结果。
    3. cmp()函数可以,一层是把有效节点排到数组的左边,然后可以进行二次比较,按题目要求来。

    二、参考代码

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct Node{
    	int key;//数据 
    	int next;//用于存储下一个地址 
    	int address;//地址 
    	bool flag;
    }node[100010];
    bool cmp(Node a, Node b){
    	 if(a.flag == false || b.flag == false){
    	 	return a.flag > b.flag;
    	 }else{
    	 	return a.key < b.key;
    	 }
    }
    int main(){
    	int N, head;
    	int cnt = 0;//用于统计有效节点个数 
    	scanf("%d %d", &N, &head);
    	for(int i = 0; i < N; i++){
    		int tkey, tnext, taddress;
    		scanf("%d %d %d", &taddress, &tkey, &tnext);
    		node[taddress] = {tkey, tnext, taddress, false};
    	} 
    	for(int i = head; i != -1; i = node[i].next){
    		cnt++;
    		node[i].flag = true; 
    	}
    	if(cnt == 0){
    		printf("0 -1");
    	}else{
    		sort(node, node+100010, cmp);
    		printf("%d %05d
    ", cnt, node[0].address);
    		for(int i = 0; i < cnt; i++){
    			if(i == cnt-1){
    				printf("%05d %d -1", node[i].address, node[i].key);
    			}else{
    				printf("%05d %d %05d
    ", node[i].address, node[i].key, node[i+1].address);
    			}	
    		}
    	}
    	return 0;
    } 
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Java 框架
    GridView1 footer求和
    常用CSS
    吉日分页转载
    强制刷新
    常用的CDN 链接 http://cdn.code.baidu.com/ http://www.bootcdn.cn/
    1、C#中Hashtable、Dictionary详解以及写入和读取对比
    webservice 交错数组
    vs plug
    DataReader方式 获取数据
  • 原文地址:https://www.cnblogs.com/tsruixi/p/12256623.html
Copyright © 2020-2023  润新知