题解 | #简单错误记录#
简单错误记录
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;
}
}
