奇怪 为什么输出的不一样?该如何处理

奇怪 为什么输出的不一样?
C/C++ code

#include"Py.h"
#include<iostream>
using namespace std;
ostream &operator<<(ostream &os,Py & rhs)
{
    cout<<"F(x)= ";
    int n=rhs.GetDatalist().Getnum();

    if(n==0)
        cout<<"0"<<endl;
    else
    {
        List b=rhs.GetDatalist();
        Node *q=b.Getfirst()->link;//1
        Node *p=rhs.GetDatalist().Getfirst()->link;//2
        for(int i=1;i<=n;i++)
        {
            cout<<p->data.c<<"x^"<<p->data.e;
            if(i!=n)
                cout<<" + ";
            p=p->link;
        }
        cout<<endl;
    }

    return os;
}

按理说p和q中的data应该是一样的吧?为什么调试的时候q的data能够正常输出 而p输出的是随机值呢?
调试结果:
- q 0x00265010 {data={...} link=0x00265058 } Node *
+ data {c=1 e=2 } Term
+ link 0x00265058 {data={...} link=0x00265010 } Node *


- p 0x002650e8 {data={...} link=0xfeeefeee } Node *
+ data {c=-17891602 e=-17891602 } Term
+ link 0xfeeefeee {data={...} link=??? } Node *


------解决方案--------------------
没看懂,应该是你循环多了一遍,或就是作用域不对
------解决方案--------------------
不好说,代码贴全了
------解决方案--------------------
这个函数写得绝对有问题,你是重载输出操作符,返回os, 但是你在函数中都没有对os进行操作就直接返回了
------解决方案--------------------
我好像同意楼上的意思,应该就是这问题吧,谢谢
------解决方案--------------------
里面应该有自己定义的库函数吧。只能看出重载输出的里的错误,上面已经提出来了。呵呵。加油。