CS1500
Algorithms and Data Structures for Engineering, FALL 2012

LAB 7: Double Linked Lists

As a special case of particularly important topic, LAB7 must be
completed by all students, even if late (the sooner the better).
30 points total, might fail the course if not completed.

FIRST PART OF LAB7 (one lab)

You have to build a car inventory using a double-linked list.
A) First design a struct/class called carobject that can be linked both ways (has next and prev pointers), and that contains the data members

ID

brand

manufacturing year

asking price

B) Write a function that appends a new car to the inventory. Your
inventory list *must be sorted by year* at all times, so the new car
will be inserted in the list at appropriate location, rather than
simply appended at the end.void car_append (int ID, char* brand, int year, int price, carobject** listhead)

C) Write a function that lists all cars in the inventory with a certain
manufacturing year. You should take advantage of the fact that the list
is sorted by yearvoid listallcars_by_year (int year, carobject* listhead)

D) Write a function that lists "adjacent" cars for a given car -
that is, all the other cars in the list that have the same
manufacturing year and the same brand. Again, you should take advantage
of the fact that the list
is sorted by yearvoid list_similar_cars (carobject* car)

E) Write a function that deletes a car form inventory. Make sure to handle all the next and prev pointers around the deleted car.void delete_car (carobject* car)

SECOND PART OF LAB7 (second lab)

F) List all the cars in the inventory sorted alphabetically by brand.
You do not have to rearrange the existing list, but rather create a new
data structure (list, array, hash etc) in order to produce the required
output.void listallcars_by_brand (carobject* listhead)

G) Compute an average asking price for all cars of a given branddouble avg_price_by_brand(carobject* listhead, char* mybrand)