我无法理解链接列表。我正在尝试将列表中的所有项目打印到标准输出,但是仅打印最后一条记录。我不确定我的代码有什么问题。我相信每次将数据放入新记录时,指针都只会存储一条记录,并且会被覆盖,但是我不知道问题出在哪里,而且我不确定如何纠正它,因为我无法看看哪里的代码是错误的。请让我知道您是否可以在我的代码中看到该问题,以及如何解决该问题。谢谢。
我的int主函数很小,但是我相信所有必要的信息都在那里。这是我的int主程序:
int main(void){
sPtr head;
head=NULL;
cout<<putIntoList(head);
system("pause");
return 0;
}
结构如下:
struct drugData{
string name;
string disease;
int effectiveness;
drugData *next;
drugData(){
effectiveness=0;
name="n";
disease="n";
next=NULL;
}
}
这是用于drugData类型作为函数参数的typedef。
typedef drugData* sPtr;
这是第一个函数,它从文件中读取数据到struct drugData的字段中。
void putIntoList(sPtr &head){
(code to open file is located here)
sPtr structPointer=new drugData;
while (!inFile.eof()){
getline(inFile,tempDrugName, ',');
getline(inFile,tempDisease,',');
inFile>>tempEff;
structPointer->name=tempDrugName;
structPointer->disease=tempDisease;
structPointer->effectiveness=tempEff;
cout<<"Drug:"<<structPointer->name;
approvalGetter(structPointer);//This function asks the user for input on each drug.
}
headInsert(structPointer, head);//This function inserts new objects at head.
menuOptions(structPointer, head);//This function presents a menu to either print, search, or quit.
inFile.close();
}//End of putIntoList function.
这是名为headInsert的函数的代码:
void headInsert(sPtr &newItem, sPtr& head){
newItem->next=head;
head=newItem;
newItem=NULL;
}
这是menuOptions函数的代码:
void menuOptions(sPtr& pointer, sPtr& head){
int menuAnswer=0;
cout"Choose a menu option:"<<endl<<"(1) Print"<<endl<<"(2) Search"<<endl<<"(3) Quit"<<endl;
cin>>menuAnswer;
if (menuAnswer==1){
for (pointer=head; pointer!=NULL; pointer=pointer->next){
cout<<pointer->drugName;
}
}//Included here is the menu options 2 and 3.
}
我希望输出是文件中包含的药物名称,其中有6种,但是我看到的唯一输出是文件中最后一种药物的名称。