首页 > 学院 > 开发设计 > 正文

1074. Reversing Linked List (25)

2019-11-08 02:33:41
字体:
来源:转载
供稿:网友

map存储所有输入,vector存储有用的输入,然后根据要求进行倒置即可

#include<iostream>#include<map>#include<string>#include<vector>#PRagma warning(disable:4996)using namespace std;struct node{ int data; string add;//开始表示后一位置的地址,最好表示当前位置的地址};map<string, node> all;//所有的输入vector<node> rr;//有用的输入string first;//开始节点int N, M;int main(){ cin >> first >> N >> M; for (int t = 0;t < N;t++)//map保存所有输入 { string a; node b; cin >> a >> b.data >> b.add; all[a] = b; } while (first!="-1")//存储有用的输入到容器 { node temp; temp.add= first; temp.data = all[first].data; first = all[first].add; rr.push_back(temp); } N = rr.size(); for (int t = 0;M*(t + 1) - 1 < N;t++)//进行翻转 { int low = M*t, high = M*(t + 1) - 1; while (low < high) { node temp; temp.add = rr[low].add;temp.data = rr[low].data; rr[low].add = rr[high].add;rr[low].data = rr[high].data; rr[high].data = temp.data;rr[high].add = temp.add; low++; high--; } } int flag = 1; for (auto x : rr)//进行输出 if (flag == 1) { cout << x.add << " " << x.data << " ";flag = 0; } else cout << x.add << endl << x.add << " " << x.data << " "; cout << -1 << endl;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表