J'étudie le module de structure de données et j'ai mon code de liste lié écrit à partir du livre. Pendant que j'exécute le code, il suffit d'ajouter un nœud et, lors de l'appel de la fonction displayNode, il affiche uniquement la valeur du premier nœud. s'il vous plaît aidez-moi quoi réparer dans mon code?Mon code de liste lié en C++ ajoute seulement une valeur
Voici le code: fichier class.h
NumberList::NumberList(){
head=nullptr;
}
void NumberList::appendNode(double num){
ListNode *newNode;
ListNode *nodeptr;
newNode=new ListNode;
newNode->value=num;
newNode->next=nullptr;
if(!head){
head=newNode;
}
else{
nodeptr=head;
while(nodeptr->next){
nodeptr=nodeptr->next;
nodeptr->next=newNode;
}
}
}
void NumberList::insertNode(double num){
ListNode *newNode;
ListNode *nodeptr;
ListNode *previousNode;
newNode=new ListNode;
newNode->value=num;
if(!head){
head=newNode;
newNode->next=nullptr;
}
else{
nodeptr=head;
previousNode=nullptr;
while(nodeptr!=nullptr&&nodeptr->value<num){
previousNode=nodeptr;
nodeptr=nodeptr->next;
}
if(previousNode==NULL){
previousNode=newNode;
newNode->next=nodeptr;
}
else{
previousNode=newNode;
newNode->next=nodeptr;
}
}
}
void NumberList::DeleteNode(double num){
ListNode *nodeptr;
ListNode *previousNode = nullptr;
if(!head){
return;
}
if(head->value==num){
nodeptr=head->next;
delete head;
head=nodeptr;
}
else{
nodeptr=head;
while(nodeptr!=NULL&&nodeptr->value!=num){
previousNode=nodeptr;
nodeptr=nodeptr->next;
}
if(nodeptr){
previousNode->next=nodeptr->next;
delete nodeptr;
}
}
}
void NumberList::DisplayNode()const{
ListNode *nodeptr;
nodeptr=head;
while(nodeptr){
cout<<nodeptr->value<<endl;
nodeptr=nodeptr->next;
}
}
NumberList::~NumberList(){}
fonction principale:
int main(int argc, const char * argv[]) {
NumberList list;
list.appendNode(0.9);
list.appendNode(13.9);
list.DisplayNode();
return 0;
}
Qu'avez-vous observé en parcourant votre code ligne par ligne avec le débogueur? – user0042
La sortie de displayNode est seulement la première valeur. –