1 条题解

  • 0
    @ 2024-12-24 9:14:33

    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
    上传者