天--- 2017-10-07 04:17 采纳率: 0%
浏览 5429

7-3 两个有序链表序列的交集(20 分)有个点过不了

#include
struct Node{
int num;
struct Node *next;
};

struct Node *read();
void comp(struct Node *n,struct Node *m);
int main(){
struct Node *a,*b;
a=read();
b=read();
comp(a,b);
}
struct Node *read(){
int flag=1;
struct Node *head,*a,*b;
a=head=malloc(sizeof(struct Node));
head->next=NULL;
scanf("%d",&a->num);
if(a->num == -1) head=NULL;
while(a->num != -1){
if(flag != 1){
b=malloc(sizeof(struct Node));
b->next=NULL;
a->next=b;
a=b;
scanf("%d",&a->num);
}

else
flag = 0;

}
return head;

}
void comp(struct Node *n,struct Node *m){
int flag=1;
struct Node *a,*b,*n_head,*c;
if(n !=NULL && m != NULL)
while(n->num != -1 || m->num != -1)
{

if(n->num == m->num)
{
if(flag==1)
{
n_head=n;
n=n->next;
a=n_head;
flag=0;

}
else{
a->next=n;
a=n;
n=n->next;

a->next = NULL;

}
m=m->next;
}
else if(n->num == -1 || m->num == -1)
break;
else if(n->num < m->num)
n=n->next;
else if(n->num > m->num)
m=m->next;

}
else
{
printf("NULL");
return 0;
}

b=n_head;

while(b)
{
if(b->num == -1){printf("NULL");break;}
printf("%d",b->num);
if(b->next != NULL)
printf(" ");
b=b->next;
}

}
图片说明
当没有交集,输出NULL,为什么不给过呢。
图片说明

  • 写回答

1条回答 默认 最新

  • devmiao 2017-10-07 15:50
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝