您的位置:首页 > 汽车 > 时评 > 国内seo做最好的公司_怎么在网上宣传自己的公司_2023新闻摘抄大全_企业网站建设规划

国内seo做最好的公司_怎么在网上宣传自己的公司_2023新闻摘抄大全_企业网站建设规划

2024/11/16 10:09:34 来源:https://blog.csdn.net/weixin_74092648/article/details/143419191  浏览:    关键词:国内seo做最好的公司_怎么在网上宣传自己的公司_2023新闻摘抄大全_企业网站建设规划
国内seo做最好的公司_怎么在网上宣传自己的公司_2023新闻摘抄大全_企业网站建设规划

题目

题目大意

给定一个链表的首节点地址和节点个数,以及一个数k。要求重新排列该链表,使其按<0 ,>= 0 && <= k,>k 的顺序排序。但是不改变原有顺序,比如-4 -> -6 -> -2,不需要再内部排序为-6 -> -4 -> -2。

思路

先遍历一遍链表,过滤掉无效节点,然后将元素按类别分别存放在3个数组中,最后再依次输出这3个数组。但是最后一个测试点发生段错误。所以我将这3个数组又合为一个数组输出。

代码

#include <iostream>
#include <vector>
using namespace std;struct node{int ads;int data;int next;
}v[100001];
int s, n, k;int main(){cin >> s >> n >> k;for (int i = 0; i < n; i++){int ads;cin >> ads;v[ads].ads = ads;cin >> v[ads].data >> v[ads].next;}vector<node> range1;  // 负数范围vector<node> range2;  // 0到kvector<node> range3;  // 大于kfor (int i = s; i != -1; i = v[i].next){if (v[i].data < 0){range1.push_back(v[i]);}else if (v[i].data <= k){range2.push_back(v[i]);}else{range3.push_back(v[i]);}}vector<node> res;  // 将3个数组合到一个数组中再输出,如果按照下面的注释代码分别输出,测试点4段错误for (int i = 0; i < (int)range1.size(); i++){res.push_back(range1[i]);}for (int i = 0; i < (int)range2.size(); i++){res.push_back(range2[i]);}for (int i = 0; i < (int)range3.size(); i++){res.push_back(range3[i]);}for (int i = 0; i < (int)res.size(); i++){printf("%05d %d ", res[i].ads, res[i].data);if (i != (int)res.size() - 1){printf("%05d\n", res[i + 1].ads);}else{printf("-1\n");}}/*for (int i = 0; i < (int)range1.size(); i++){printf("%05d %d ", range1[i].ads, range1[i].data);if (i != (int)range1.size() - 1){printf("%05d\n", range1[i + 1].ads);}else{if ((int)range2.size() == 0 && (int)range3.size() == 0){printf("-1\n");return 0;}printf("%05d\n", range2[0].ads);}}for (int i = 0; i < (int)range2.size(); i++){printf("%05d %d ", range2[i].ads, range2[i].data);if (i != (int)range2.size() - 1){printf("%05d\n", range2[i + 1].ads);}else{if ((int)range3.size() == 0){printf("-1\n");return 0;}printf("%05d\n", range3[0].ads);}}for (int i = 0; i < (int)range3.size(); i++){printf("%05d %d ", range3[i].ads, range3[i].data);if (i != (int)range3.size() - 1){printf("%05d\n", range3[i + 1].ads);}else{printf("-1\n", range3[0].ads);}}*/return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com