我工作的一个任务要创建一个程序,可以使用链接列表的文本文件中读取一个多项式。 这当我试图从read_poly功能事情是怪异返回链表“poly_pointer”的起始指针。
预期结果应该是-12
但我得到的是-10
如果我在read_poly返回前添加的一行代码
cout << curr_ptr->coef;
会突然变成2-12输出可能有人提供关于为什么和如何解决这个问题的一些解释呢?
Polynomial.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
Polynomial.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;
}
main.cpp中
#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;
}