题解 | #合并表记录#
合并表记录
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;
}