problemscpp
A collection of my answers to algorithm problems in c++.
| 函数
pat::b::b1025 命名空间参考

1025 反转链表 更多...

struct  Node
 

函数

int main (istream &cin, ostream &cout)
 
 TEST (b1025, case1)
 

详细描述

1025 反转链表

函数说明

◆ main()

int pat::b::b1025::main ( istream &  cin,
ostream &  cout 
)

在文件 pat.cpp834 行定义.

834 {
835 string address0;
836 int n;
837 int k;
838 cin >> address0 >> n >> k;
839 unordered_map<string, pair<int, string>> nodes;
840 for(int i = 0; i < n; i++) {
841 string address;
842 string next;
843 int data;
844 cin >> address >> data >> next;
845 nodes.insert(make_pair(address, make_pair(data, next)));
846 }
847 vector<pair<string, int>> vec;
848 string current_addr = address0;
849 while(current_addr != "-1") {
850 auto [data, next] = nodes[current_addr];
851 vec.emplace_back(current_addr, data);
852 current_addr = next;
853 }
854 n = vec.size();
855 for(int i = 0; i < n - n % k; i += k) {
856 reverse(vec.begin() + i, vec.begin() + i + k);
857 }
858 for(int i = 0; i < n; i++) {
859 cout << vec[i].first << ' ' << vec[i].second << ' ' << (i + 1 < n ? vec[i + 1].first : "-1") << endl;
860 }
861 return 0;
862 }
unsigned reverse(unsigned int n, unsigned int d)
Definition: pat.cpp:4434
int vec[100010]
Definition: pat.cpp:5095

引用了 pat::a::a1015::reverse() , 以及 pat::a::a7_2::vec.

被这些函数引用 TEST().

◆ TEST()

pat::b::b1025::TEST ( b1025  ,
case1   
)

在文件 pat_test.cpp371 行定义.

371 {
372 istringstream in("00100 6 4\n"
373 "00000 4 99999\n"
374 "00100 1 12309\n"
375 "68237 6 -1\n"
376 "33218 3 00000\n"
377 "99999 5 68237\n"
378 "12309 2 33218");
379 auto out = ostringstream();
380 main(in, out);
381 const auto ans = out.str();
382 ASSERT_EQ("00000 4 33218\n"
383 "33218 3 12309\n"
384 "12309 2 00100\n"
385 "00100 1 99999\n"
386 "99999 5 68237\n"
387 "68237 6 -1\n",
388 out.str());
389 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().