我在 c++ 中的链表代码只附加一个值



我研究数据结构模块,我从书中写了我的链表代码。当我运行代码时,它只是附加一个节点,而在调用 displayNode 函数时,它只显示第一个节点的值。 请帮助我在我的代码中修复什么?

这是代码: 类.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(){}

主要功能:

int main(int argc, const char * argv[]) {
NumberList list;
list.appendNode(0.9);
list.appendNode(13.9);
list.DisplayNode();
return 0;
}

仔细考虑用于单步执行列表的代码,以查找可以附加新值的位置,尤其是该循环体中的最后一行:

while(nodeptr->next){
nodeptr=nodeptr->next;
nodeptr->next=newNode;
}

如果您实际上通过调试器单步执行代码,检查每个语句后的列表,您将立即看到问题。

相关内容

  • 没有找到相关文章

最新更新