• 【PAT】B1075 链表元素分类(25 分)


    这道题算有点难,心目中理想的难度。
    不能前怕狼后怕虎,一会担心超时,一会又担心内存过大,直接撸
    将三部分分别保存到vector
    有意思的在于输出
    分别输出第一个的add和num
    中间输出nextadd ,换行,add,num
    最后输出尾元素的next为-1

    #include<iostream>
    #include<stdio.h>
    #include<map>
    #include<string>
    #include<algorithm>
    #include<vector>
    using namespace std;
    struct number{
    	int add,num,next;
    }arr[100000];//原始输入
    int main() {
    	int head,N,K;scanf("%d %d %d",&head,&N,&K);
    	for(int i=0;i<N;i++){			//输入数据
    		int add;scanf("%d",&add);
    		arr[add].add=add;
    		scanf("%d %d",&arr[add].num,&arr[add].next);
    	}
    	vector<int> v[3];				//存储三种类型
    	while(head!=-1){				//遍历链表,把链表分成三份
    		if(arr[head].num<0)			//负数
    			v[0].push_back(head);
    		else if(arr[head].num<=K)	//【0-K】
    			v[1].push_back(head);
    		else v[2].push_back(head);	//大于K
    		head=arr[head].next;
    	}
    	int flag=0;
    	for(int i=0;i<3;i++){
    		for(int j=0;j<v[i].size();j++){
                if(flag==0){							//找出第一个,只输出地址和值
    				printf("%05d %d ",arr[v[i][j]].add,arr[v[i][j]].num);
    				flag=1;
                }
    			else								//其他的输出上一行的下一个元素,换行,当前元素地址,当前值
    				printf("%05d
    %05d %d ",arr[v[i][j]].add,arr[v[i][j]].add,arr[v[i][j]].num);
    		}
    	}
    	printf("-1");				//尾指针的next为-1
    	return 0;
    }
    
  • 相关阅读:
    [创建型] 原型模式
    深复制和浅复制讨论
    设计模式扫盲
    selenium定位不到元素 yimu
    Jmeter拓展插件可查看和lr一样的图形结果 yimu
    python用字典实现switch..case类似的函数调用 yimu
    pycharm运行Pytest,有没有将Pytest写入Python代码中的区别 yimu
    Jmeter HTTPS接口测试的证书导入 yimu
    杭电acm2203
    杭电acm1259
  • 原文地址:https://www.cnblogs.com/hebust/p/9491373.html
Copyright © 2020-2023  润新知