我正在做一项任务,该任务要创建一个程序,该程序可以使用链表从文本文件中读取多项式。当我试图从 read_poly 函数返回链表“poly_pointer”的起始指针时,事情变得很奇怪。
预期输出应为 -12
但我得到的是-10
如果我在 read_poly 返回之前添加一行代码
cout << curr_ptr->coef;
输出会突然变成 2-12 有人可以解释一下为什么以及如何解决这个问题吗?
多项式.h
#ifndef _POLYNOMIAL_H_
#define _POLYNOMIAL_H_
using namespace std;
typedef struct poly_node *poly_pointer;
typedef struct poly_node {
int coef;
int expon;
poly_pointer link;
};
poly_pointer addNode(int coef, int expon);
#endif
多项式.cpp
#include <iostream>
#include <fstream>
#include <string>
#include "Polynomial.h"
using namespace std;
poly_pointer addNode(int coef, int expon)
{
poly_node a;
poly_pointer ptr = &a;
a.coef = coef;
a.expon = expon;
return ptr;
}
poly_pointer read_poly(const char* fileName)
{
poly_pointer start_ptr, curr_ptr;
start_ptr = curr_ptr = addNode(-1, 6);
curr_ptr = curr_ptr->link = addNode(2, 3);
return start_ptr;
}
主文件
#include <iostream>
#include "Polynomial.h"
using namespace std;
int main(void)
{
poly_pointer a, b, d, e, f;
a = read_poly("input1.txt");
cout << a->coef;
cout << a->link->coef;
cout << "\n-eop-";
cin.get();
return 0;
}