#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;
}
}
}
}
这应该是一个链表,用户在其中输入姓名和贿赂金额,然后将其添加到贿赂金额最高的列表中。
在这个特定阶段,我只是想弄清楚如何将人员多次输入到列表中,甚至没有贿赂进入等式。由于包含了我不太擅长的指针,我在这里遇到了麻烦。
成功输入列表中的第一个节点后,程序在我输入第二个节点后冻结,因此我在“else if(head!=NULL)”处的代码存在缺陷。我不确定这是语法还是我根本没有完全理解这个概念。
此外,我不允许使用返回前一个节点的链接作为 PersonRec 结构的一部分,这可能对我有所帮助。
我该如何解决这个问题?