I wrote a code of getting a linked list with numbers, and trying to make the list as ascending series. Unfortunately the code is not complied and I don't know why.
I have tried to play with the pointers and references but I cant put my hand on what is wrong.
#include <iostream>
using namespace std;
class ListNode {
public:
  ListNode(const int &info) : data(info), nextPtr(0) {}
  int getData() const { return data; }
  ListNode *getNext() const { return nextPtr; }
  void setNext(ListNode *next) { nextPtr = next; }
private:
  int data;
  ListNode *nextPtr;
};
ListNode sort(ListNode &temp) {
  ListNode *first = &temp;
  ListNode *curr = first;
  ListNode *next = curr->getNext();
  ListNode *found = 0;
  while (curr->getNext() != 0) {
    if (curr->getData() > next->getData()) {
      if (curr == first) {
        first = next;
        found = curr;
      }
      else {
        curr->setNext(next->getNext());
        found = next;
      }
      break;
    }
    curr = next;
    next = next->getNext();
  }
  curr = first;
  next = curr->getNext();
  while (curr->getNext() != 0) {
    if (curr->getData() <= found->getData() &&
        found->getData() < next->getData()) {
      curr->setNext(found);
      found->setNext(next);
      break;
    }
    curr = next;
    next = next->getNext();
  }
  return *first;
}
void print(ListNode &temp) {
  ListNode *curr = &temp;
  while (curr != 0) {
    cout << curr->getData() << " ";
    curr = curr->getNext();
  }
  cout << endl;
}
int main1() {
  ListNode a(2);
  ListNode b(5);
  ListNode c(8);
  ListNode d(13);
  ListNode e(18);
  ListNode f(7);
  ListNode g(21);
  a.setNext(&b);
  b.setNext(&c);
  c.setNext(&d);
  d.setNext(&e);
  e.setNext(&f);
  f.setNext(&g);
  print(a);
  print(sort(a));
  return 0;
}
I have checked hundred times and do not know why this code is not compiling.
 
     
    