1 条题解
-
0
C++ :
#include <stdio.h> #include <malloc.h> typedef struct LNode { int data; //系数 int index; //指数 struct LNode *next; } LNode; void init(LNode *&L, int data, int index) { LNode *s, *p, *q; s = L; p = L -> next; q = (LNode *) malloc(sizeof(LNode)); q -> next = NULL; q -> data = data; q -> index = index; if (p) { int subIndex; while (p) { subIndex = q -> index - p -> index; if (subIndex > 0) { q -> next = p; s -> next = q; break; } if (subIndex == 0) { p -> data += q -> data; //系数相加,指数不变 free(q); break; } s = p; p = p -> next; } if (p == NULL) { q -> next = p; s -> next = q; } } else { q -> next = p; s -> next = q; } } void output(LNode *L) { LNode *p; p = L -> next; while (p) { if (p -> data != 0) { printf("%d %d\n", p -> data, p -> index); } p = p -> next; } } int main() { int i; int m, n; int data, index; LNode *L; L = (LNode *) malloc(sizeof(LNode)); L -> next = NULL; scanf("%d %d", &m, &n); for (i = 1; i <= m+n; ++i) { fflush(stdin); scanf("%d %d", &data, &index); if (data != 0) { //系数不为0时,才插入链表 init(L, data, index); } } output(L); return 0; }
- 1
信息
- ID
- 598
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者