私はリンクされたリストをコーディングしようとしています。私がデバッグする場合、または私はこのようなprint文を1つ追加します。C++リンクされたリスト奇妙な出力
intlist.add_node(7);
intlist.print_list();
intlist.add_node(8);
これは細かい印刷物です。
5
7
5
7
8
しかし、私はその文を削除した場合、それは3つしかエイトを印刷します。同じことがデバッグのために行く、それは動作しているようだが、私はちょうどそれを実行しない場合。私は何が間違っているのか分からなかった。 私のメインです。
int main(){
Linked_list intlist;
intlist.add_node(5);
intlist.add_node(7);
intlist.print_list();
intlist.add_node(8);
intlist.print_list();
return 0;
}
header;
class Linked_list{
public:
Linked_list();
void add_node(int data);
void remove_node(int data);
int get_data(int index);
void print_list();
struct Node {
int data;
Node* next;
};
Node* head;
int lenght;
};
ヘッダーのソースファイル。
Linked_list::Linked_list(){
head = 0;
lenght = 0;
}
void Linked_list::add_node(int data){
Node* newnode = new Node;
newnode->data = data;
newnode->next = NULL;
if (head == 0) {head = newnode; lenght = 1; return;}
else{
Node* temp = new Node;
temp = head;
while (temp->next != NULL){
temp = temp->next;
}
lenght++;
temp->next = newnode;
delete temp;
}
}
void Linked_list::remove_node(int data){
return;
}
int Linked_list::get_data(int index){
return 0;
}
void Linked_list::print_list(){
if (head == 0) {std::cout << "List is empty!!" << std::endl;
return;}
else{
Node* ptr = new Node;
ptr = head;
for (int i = lenght; i > 0; i--){
std::cout << ptr->data << std::endl;
ptr = ptr->next;
}
}
}
あなたのprint_listにバグがあります。なぜ、ノードを割り当てて、次のステートメントで割り当てられたメモリを漏らしているのですか? – drescherjm