0
我一直在尝试从我的链表中的第一个节点检索数据很长时间了。原谅我,但我仍然是新来的C++,特别是指针和链表。基本的C++链接列表节点和指针探测器
这里是我如何读从我的文本文件中的数据(工作正常到目前为止)
void readFile(ifstream& budgetFile, budgetItem *newNode, int& counter, budgetItem *temp, budgetItem *header)
{
char pauseChar;
int ctype;
string cname;
double camount;
char cleared;
itemPtr listTop = NULL;
while (!budgetFile.eof())
{
//newNode = new budgetItem;
budgetFile >> ctype >> cname >> camount >> cleared;
newNode->theType = ctype;
cout << newNode->theType << endl;
//cout << ctype << endl;
newNode->name = cname;
cout << newNode->name << endl;
newNode->amount = camount;
cout << newNode->amount << endl;
if (cleared == 'Y') {
newNode->cleared = true;
}
else{
newNode->cleared = false;
}
newNode->next = listTop;
listTop = newNode;
if (counter == 0)
{
header = newNode;
}
counter++;
}
return;
}
这里是我正在试图找回从第一节点开始的数据。它根本不起作用。任何帮助,将不胜感激。
void showBudget (budgetItem *newNode, budgetItem *temp, budgetItem *header)
{
double incomeTotal;
double expenseTotal;
double differenceTotal;
//itemPtr *newlist;
//newNode = header;
itemPtr listTop;
budgetItem *here = listTop;
do {
cout << "INCOME:" << endl;
cout << " Item Amount Cleared" << endl;
cout << " ---------------- ------- -------" << endl;
if (newNode == NULL)
{
cout << "List is empty." << endl;
}
else
{
if (newNode->theType != 0)
{
cout << " " << newNode->name << setw(23) << fixed << setprecision(2) << newNode->amount << " ";
if (newNode->cleared == true) {
cout << "no" << endl;
}
else{
cout << "yes" << endl;
}
}
else{
cout << endl;
}
}
newNode = newNode->next;
} while (newNode != NULL);
cout << "End of List." << endl;
return;
}
您需要在循环的每次迭代中创建一个新节点,就像您在评论过的语句中所做的一样。 –
此代码有*许多*错误的东西。原则上,正如@ Cheersandhth.-Alf指出的那样,您不是创建新节点,而是覆盖单个节点。更一般地说,在测试任何代码之前,你会写很多代码,并且无法解耦你的函数。从一个更简单的Node类开始,测试一切,然后逐步构建。 – Beta