2-4 两个有序链表序列的交集
分数 6
作者 DS课程组
单位 浙江大学
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。
输入格式:
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:
在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。
输入样例:
输出样例:
此题我是按照PTA(顺序表)2-5 集合减法 | zhangzhang-blog做的,用的布尔数组 瞬间判断 元素 num 是否在序列中,咋就是有个答案不对
我的部分正确
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| #include <iostream> using namespace std;
typedef struct LNode { int data; struct LNode *next; } LNode, *LinkList;
const int Max_ELEM = 30000;
bool exists[Max_ELEM+1];
void initList(LinkList &L) { L = new LNode; L->next = NULL; }
void insertAtTail(LinkList &tail, int num) { LNode *newNode = new LNode; newNode->data = num; newNode->next = NULL; tail->next = newNode; tail = newNode; }
int main() { int num;
for (int i = 0; i <= Max_ELEM; ++i) { exists[i] = false; } while (cin >> num) { if (num < 0) { break; } if (num >= 0 && num <= Max_ELEM) { exists[num] = true; } }
LinkList L; initList(L); LinkList tail = L; while (cin >> num) { if (num < 0) { break; } if (num >= 0 && num <= Max_ELEM) { if (exists[num]) { insertAtTail(tail, num); exists[num] = false; } } }
bool hasTheSame = false; bool isFirst = true; LinkList p = L->next; while (p != NULL) { if (!isFirst) { cout << " "; } cout << p->data; isFirst = false; hasTheSame = true; p = p->next; } if (!hasTheSame) { cout << "NULL"; } }
|
| 测试点 |
提示 |
内存(KB) |
用时(ms) |
结果 |
得分 |
| 0 |
|
552 |
2 |
答案正确 |
1 / 1 |
| 1 |
|
560 |
2 |
答案正确 |
1 / 1 |
| 2 |
|
572 |
2 |
答案正确 |
1 / 1 |
| 3 |
|
576 |
2 |
答案正确 |
1 / 1 |
| 4 |
|
572 |
2 |
答案正确 |
1 / 1 |
| 5 |
|
644 |
249 |
答案错误 |
0 / 1 |
逆天,一点提示都没有,ai也不告诉我哪错了