题解 | #合并表记录#

合并表记录

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;
}

全部评论

相关推荐

10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务