リンクリストを使用してテキストファイルから多項式を読み取ることができるプログラムを作成する課題に取り組んでいます。リンクされたリスト「poly_pointer」の開始ポインターを read_poly 関数から返そうとしたとき、どれが奇妙でしたか。
予想される出力は -12 である必要があります
しかし、私が得たのは-10です
そして、read_poly で return の直前に 1 行のコードを追加すると、
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;
}
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;
}