1032 Sharing (25分)测试点3运行超时

本文讨论了一段C++代码,该代码用于遍历链表并寻找两个链表的公共节点。作者指出代码中for循环条件的错误可能导致未正确找到公共节点,特别是当公共节点为最后一个节点时。通过修正循环条件,确保了遍历的完整性,避免了可能的死循环。代码中使用了结构体`node`来表示链表节点,并通过标志`flag`来标记已访问过的节点。
摘要由CSDN通过智能技术生成

原因是for循环中应该是p!=-1;否则还没到最后一个节点就结束了,但这也应该是答案错误呀?比如第一个公共节点是最后那个节点,结果就会输出-1。
不会是死循环吧?f[p].next!=-1肯定会结束,不管什么错,还是先认认真真读一遍代码吧
①%05d是按五位数输出整数

#include<iostream>
using namespace std;
struct node{
    char data;
    int next;
    bool flag=false;
}f[100010];
int main()
{
    int m,n,q;
    cin>>m>>n>>q;
    for(int i=0;i<q;i++)
    {
         int l;
        cin>>l;
        cin>>f[l].data>>f[l].next;
    }
    int p;
    for(p=m;f[p].next!=-1;p=f[p].next)
    {
        f[p].flag=true;
    }
    for(p=n;f[p].next!=-1;p=f[p].next)
    {
        if(f[p].flag==true)  break;
    }
    if(f[p].next==-1)
        cout<<"-1";
    else
        printf("%05d",p);
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值