CS202 6- ‹#›
>> Operators
n istream & operator >> (istream & in, list & l) {
n node * current = l.tail;
n     if (!current) {      //empty list starting out
n l.head = current = new node;
n in >>l.head->obj;
n            l.tail = l.ptr = l.head;
n            l.head->next = NULL;
n     }
n
n node * savelist = l.tail->next;  
n char next_char; 
n  while ((next_char = in.peek()) != ‘\n’ &&
n          next_char != EOF) {
n    current->next = new node;
n    current = current->next;
n    in >>current->obj;  //what does this do?
n }
n  current->next = savelist; ptr = current;
n     if (!savelist) l.tail = current;
n  return in;
n }
n