解题思路: 这数据输入,每行的最后一个字符是'\n',但是最后一行的最后一个字符是啥不知道,反正不是空格,也不是换行。
注意事项: 贴的代码乱乱的,去这看吧:https://www.dotcpp.com/run/13388639
参考代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct _node{
int value;
int factor;
struct _node *next;
}node;
void add_one(node **phead,int v,int f);
void show(node *head);
void free_all(node **phead);
void together(node **phead1,node **phead2);
int main()
{
node *head1 = NULL;
node *head2 = NULL;
int v,f;char isend;
int first;
while(~scanf("%d %d",&v,&f))
{
isend = getchar();
first = 0;
do{
if(first)
{
scanf("%d %d",&v,&f);
isend = getchar();
}
else first = 1;
add_one(&head1,v,f);
}while(isend!='\n');
isend = '\0';
while(isend!='\n')
{
scanf("%d %d",&v,&f);
isend = getchar();
add_one(&head2,v,f);
if(isend!=' ') break;
}
together(&head1,&head2);
free_all(&head1);
}
return 0;
}
void add_one(node **phead,int v,int f)
{
node *p = *phead;
node *a = (node*)malloc(sizeof(node));
a->value = v;a->factor = f;
a->next = NULL;
if(!p) *phead = a;
else
{
while(p->next)
p=p->next;
p->next = a;
}
}
void show(node *head)
{
node *p = head;
while(p->next)
{
if(p->value!=0)
printf("%d %d ",p->value,p->factor);
p=p->next;
}
if(p->value!=0)
printf("%d %d \n",p->value,p->factor);
}
void free_all(node **phead)
{
node *p = *phead;
while(p)
{
node *rem = p;
p=p->next;
free(rem);
}
*phead = NULL;
}
void together(node **phead1,node **phead2)
{
node *p1 = NULL;
node *p2 = NULL;
if((*phead1)->factor>=(*phead2)->factor)
{
p1 = *phead1;
p2 = *phead2;
}
else
{
p1 = *phead2;
p2 = *phead1;
}
node *p1copy = p1;
node *p2next = NULL;
node *p1pre = NULL;
int isok = 1;
while(p2 && isok)
{
while(p1->factor>p2->factor)
{
p1pre = p1;
p1 = p1->next;
if(!p1)
{
p1pre->next = p2;
isok = 0;
break;
}
}
if(isok)
{
if(p1->factor==p2->factor)
{
p1->value += p2->value;
node *buf = p2;
p2 = p2->next;
free(buf);
}
else
{
p2next = p2->next;
p1pre->next = p2;
p2->next = p1;
p2 = p2next;
}
}
}
show(p1copy);
*phead2 = NULL;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复