为什么我的printList函数仅打印链接列表中的最后一项?

时间:2019-04-02 22:18:46

标签: c++ struct linked-list

我无法理解链接列表。我正在尝试将列表中的所有项目打印到标准输出,但是仅打印最后一条记录。我不确定我的代码有什么问题。我相信每次将数据放入新记录时,指针都只会存储一条记录,并且会被覆盖,但是我不知道问题出在哪里,而且我不确定如何纠正它,因为我无法看看哪里的代码是错误的。请让我知道您是否可以在我的代码中看到该问题,以及如何解决该问题。谢谢。

我的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种,但是我看到的唯一输出是文件中最后一种药物的名称。

0 个答案:

没有答案