#include "PersonList.h"
#include <iostream>
#include <string>
using namespace std;
PersonList::PersonList()
{
head = NULL; //Head is a PersonRec*
}
struct PersonRec
{
string aName;
int aBribe;
PersonRec* link;
};
void PersonList::AddToList()
{
//string a;
//int b;
PersonRec* p;
PersonRec **currPtr = &head;
p = new PersonRec;
cout << "\nEnter the person's name: ";
cin >> p->aName;
cout<< "\nEnter the person's contribution: ";
cin >> p->aBribe;
if (head == NULL)
{
cout<<1<<endl;
head=p;
}
else if(head!=NULL)
{
bool x = true;
while (x != false)
{
*currPtr = (*currPtr)->link;
if (currPtr == NULL)
{
currPtr = &p;
x = false;
}
}
}
}
これは、ユーザーが名前と賄賂の金額を入力し、賄賂の額が最も多いリストに追加されるリンク リストであると想定されています。
この特定の段階では、賄賂を考慮に入れることなく、人々をリストに複数回入力する方法を見つけようとしています. 苦手なポインターが入っているので、ここで困っています。
リストの最初のノードが正常に入力された後、2 番目のノードを入力するとプログラムがフリーズするため、"else if(head!=NULL)" のコードに欠陥があります。それが構文なのか、それとも単に概念を完全に理解していないのかはわかりません。
また、PersonRec 構造の一部として前のノードに戻るリンクを使用することは許可されていません。
この問題を解決するにはどうすればよいですか?