题解 | #合并表记录#
合并表记录
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
#include<stdio.h> #include<stdlib.h> typedef struct pNode { unsigned int index; unsigned int value; struct pNode *next; }pNode; int main() { unsigned int index,value,i,n; scanf("%u",&n); pNode *Head=(pNode *)malloc(sizeof(pNode)); Head->next=NULL; for(i=0;i<n;i++) { pNode *p=(pNode *)malloc(sizeof(pNode)); scanf("%u %u",&p->index,&p->value); pNode *pHead=Head; pNode *pInsert=Head->next; //升序排序 while(pInsert!=NULL&&pInsert->index<p->index) { pHead=pInsert; pInsert=pInsert->next; } //合并 if(pInsert!=NULL&&pInsert->index==p->index) { pInsert->value+=p->value; free(p); p=NULL; } else { p->next=pInsert; pHead->next=p; } } pNode *p=Head->next; pNode *pHead=Head; while(p!=NULL) { printf("%u %u\n",p->index,p->value); pHead=p; p=p->next; } return 0; }