linked list quiz key

2
Linked List Quiz Key 1. Write a ListNode class that will hold Person* as its data, and is used in a class named List. Include a constructor, and a destructor for the Person* class ListNode { Person *person; ListNode *next; ListNode(const Person *p, ListNode *n) : next(n) { person = new Person(*p); } // ListNode() ~ListNode() { delete person; } // ~ListNode() }; // class ListNode 2. Write a printAll() method for the List class that relies on an overloaded << method for Person to print the contents of the list. void List::printAll() { for(ListNode *ptr = head; ptr; ptr = ptr->next) cout << *(ptr->person); } // printAll() 3. Assuming that the Person class has a public getName() method, write an insert method for the List class that keeps the list sorted by the names of the Persons. void List::insert(const Person *p) { ListNode *ptr, *prev = NULL; for(ptr = head; ptr && strcmp(ptr->person->getName(), p->getName()) < 0; ptr = ptr->next) prev = ptr; if (prev) // or if (ptr != head) prev->next = new ListNode(p, ptr);

Upload: niki-lim

Post on 22-Dec-2015

219 views

Category:

Documents


2 download

DESCRIPTION

ECS40 Davis

TRANSCRIPT

Page 1: Linked List Quiz Key

Linked List Quiz Key 1.  Write a ListNode class that will hold Person* as its data, and is used in a class named List.  Include a constructor, and a destructor for the Person* class ListNode {

Person *person;ListNode *next; ListNode(const Person *p, ListNode *n) : next(n){

person = new Person(*p);} // ListNode()

      ~ListNode()     {          delete person;     }  // ~ListNode()};  // class ListNode 2.  Write a printAll() method for the List class that relies on an overloaded << method for Person to print the contents of the list. void List::printAll() {

for(ListNode *ptr = head; ptr; ptr = ptr->next)     cout << *(ptr->person);

}  // printAll()  3.  Assuming that the Person class has a public getName() method, write an insert method for the List class that keeps the list sorted by the names of the Persons. void List::insert(const Person *p) {

ListNode *ptr, *prev = NULL; for(ptr = head; ptr && strcmp(ptr->person->getName(), p->getName()) < 0; ptr = ptr->next)     prev = ptr; if (prev)  // or if (ptr != head)

prev->next = new ListNode(p, ptr);     else          head = new ListNode(p, ptr);} // insert()