-4
私はデータ構造モジュールを研究し、私はそのブックから書かれたリンクリストコードを持っています。私はコードを実行している間、それはちょうど1つのノードを追加し、displayNode関数を呼び出すと、最初のノードの値だけを表示します。 私のコードで何を修正するのを手伝ってください? class.hファイル私のリンクされたリストコードはC++で1つの値だけを追加しています
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;
}
デバッガでコードを1行ずつステップ実行する際に、何を観察しましたか? – user0042
displayNodeの出力は最初の値のみです。 –