题解 | #简单错误记录#
简单错误记录
https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
#include <iostream> #include <string.h> using namespace std; struct log_ { string s; int code; int num; log_* next; }; struct log_head { log_* next; int len; }; string findfile(string s) { string s1 = ""; for (int i = s.length() - 1; i >= 0 && s.length() - i <= 16; i--) { if (s[i] == '\\') { break; } s1 = s[i] + s1; } return s1; } int main() { log_head* head = new log_head; head->len = 0; head->next = NULL; string a; int b; log_* last = head->next; while (cin >> a >> b) { log_* node = new log_; string ss = findfile(a); node->s = ss; node->code = b; node->next = NULL; node->num = 1; int flag = 0; for (log_* p = head->next; p != NULL; p = p->next) { if (node->s == p->s && node->code == p->code) { p->num++; flag = 1; break; } } if (flag == 0) { if (last != NULL) { node->next = last->next; last->next = node; last = node; head->len++; } else { node->next = NULL; head->next = node; last = node; head->len++; } } } log_* first = head->next; if (head->len > 8) { for (int i = 0; i < (head->len - 8); i++) { first = first->next; } } while (first) { cout << first->s << " " << first->code << " " << first->num << endl; first = first -> next; } }