Lista jednokierunkowa w C++, operator wejścia

0

Ktoś wie dlaczego kompilator krzyczy że to zwraca 'exited with non-zero status'? I w ogóle nie reaguje na wywołanie tego operatora?

#include <iostream>
using namespace std;

class Node{
public:
  Node * next;
  int data;
  
  Node(){
    Node *n= new Node;
    n->data = 0;
    n->next = NULL;
  }
  ~Node(){
    
    int *ptr = &data;
    delete ptr;
    delete next;
  }

};

class List{
public:
  Node* head;
  
  List(){
    Node *p = new Node;
    p = NULL;
    head = p;
  }
  
  ~List(){
    Node *p = head;
    Node *x;
    while(p){
      x = p->next;
      delete p;
      p = x;
    }
  }
  
  
  friend istream & operator >> (istream &s, List &l){
    Node *p,*t = l.head;
    s >> p->data;
    p->next = NULL;
    if (l.head==NULL){
      l.head = p;
    }else{
      while(t){
        t = t->next;
      }
      t->next = p;
    }
  }
};
  

int main(void){
  List L;
  return 0;
}


1

Może brak return?

0

Napisałam ewentualnie taką metodę w zamian za operator ale przy niej jest to samo, może problem tkwi nie w tym a w konstruktorach/destruktorach?

  int add(int x){
    Node * p = new Node;
    Node *pom = head;
    p->data = x;
    p->next = nullptr;
    if (head = nullptr){
      head = p;
    }else{
      while(pom){
          pom = pom->next;
      }
      pom->next = p;
    }
    return 0;
  }
0
  Node(){
    data = 0;
    next = NULL;
  }
  ~Node(){
  }
  List(){
    head = new Node;
  }

Coś takiego raczej powinno być. Warto na sam początek przeczytać jakiś tutorial o C++, na pewno ułatwi kodowanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1