그래서이 연구에 대한 연구가 많이 있었고 제대로 작동하지 못했습니다. 파일에서 데이터를 읽고 링크 된 목록에 저장해야합니다. while 루프는 $$$$$의 센티넬에 도달하면 중지되어야합니다. 그런 다음 ID 번호 ([사용자 입력])로 검색하여 데이터를 표시합니다. 아직까지는 데이터를 올바르게 표시하고 바로 지금 읽고 싶습니다.C++ 연결된 목록 - 센티넬을 사용하여 파일에서 데이터 읽기
내 문제는 데이터가 $$$$$에서 멈추지 않는다는 것입니다 (심지어 "inFile.peek()! = EOF와 $$$$$을 생략 함)해도 멈추지 않습니다. 여분의 쓰레기 기록을지고.
나는 내 while 루프와 어떻게 새로운 노드를 만드는 오전 그러나 나는 그것이 다른 방법으로 동작하지 않습니다 함께 할 수있는 뭔가가 알고있다.
상관 도움이 될 것이다 알.
students.txt
Nick J Cooley
324123
60
70
80
90
Jay M Hill
412254
70
80
90
100
$$$$$
,745,
assign6.h 파일
이#pragma once
#include <iostream>
#include <string>
using namespace std;
class assign6
{
public:
assign6(); // constructor
void displayStudents();
private:
struct Node
{ string firstName;
string midIni;
string lastName;
int idNum;
int sco1; //Test score 1
int sco2; //Test score 2
int sco3; //Test score 3
int sco4; //Test score 4
Node *next;
};
Node *head;
Node *headPtr;
};
assign6Imp.cpp // 실행 파일이
#include "assign6.h"
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
assign6::assign6() //constructor
{
ifstream inFile;
inFile.open("students.txt");
head = NULL;
head = new Node;
headPtr = head;
while (inFile.peek() != EOF) //reading in from file and storing in linked list
{
inFile >> head->firstName >> head->midIni >> head->lastName;
inFile >> head->idNum;
inFile >> head->sco1;
inFile >> head->sco2;
inFile >> head->sco3;
inFile >> head->sco4;
if (inFile != "$$$$$")
{
head->next = NULL;
head->next = new Node;
head = head->next;
}
}
head->next = NULL;
inFile.close();
}
void assign6::displayStudents()
{
int average = 0;
for (Node *cur = headPtr; cur != NULL; cur = cur->next)
{
cout << cur->firstName << " " << cur->midIni << " " << cur->lastName << endl;
cout << cur->idNum << endl;
average = (cur->sco1 + cur->sco2 + cur->sco3 + cur->sco4)/4;
cout << cur->sco1 << " " << cur->sco2 << " " << cur->sco3 << " " << cur->sco4 << " " << "average: " << average << endl;
}
}
이터 레이션이 불필요한 노드를 추가합니다.이 노드는 이후에 'next' 포인터가 null로 설정됩니다. 이 'Node' 멤버와는 별도로,이 Node 인스턴스의 모든 멤버는 컴파일러 생성자, 즉 가비지 레코드에 의해 기본값으로 초기화됩니다. – damienh
그래서 생성자에 넣었습니까? 그건 틀림없이 말이야. – Nick
왜 std :: list를 사용하지 않습니까? – Sebastian