The Victorian Government issues licence plates for automobiles which will travel on Victoria’s roads. An Victorian license plate consists of five characters — the first and last two are alphabetic and the second and third are numeric, for example “F12DN”. Thus there are at most 26 x 10 x 10 x 26 x 26 = 1,757,600 licence plates available. Each car is issued with its licence plate once and the licence plate does not change. It may be assumed that cars (and hence licence plates) last forever. Each year 40,000 new cars are licensed. Each day the police make approximately 1000 enquiries to the database seeking details of the vehicle whose licence plate they have observed; this is approximately 350,000 annually. The State Government has just appointed you Chief Senior Systems’ Analyst and asked you to redesign the licensing management system.
a) Which underlying data structure (array or linked‐list) will you use as a basis to model the Victorian licensing database? In two–three sentences, justify your answer.
b) Which kind of abstract data type (binary tree, general tree, array, stack, priority queue, double‐ended queue, set, list, etc.) would you use to model the Victorian licensing database? In two–three sentences, justify your answer
c) The Federal Government supervises the licensing of automobiles which travel on Australia’s roads. There are eight licensing bodies. These are the governments of VIC, NSW, QLD, SA, WA, TAS, the ACT, and the NT. The Federal Government holds a computer system with data structures that link to the systems within each state/territory. Which underlying data structure (array or linked‐list) will you use as a basis to model the Federal system? In two–three sentences, justify your answer.
d) Which kind of abstract data type (binary tree, general tree, array, stack, priority queue, double‐ended queue, set, list, etc.) would you use to model the Federal system (described in (c) above)? In two–three sentences, justify your answer.
e) The vehicle type can be defined as follows:
//Start of code
typedef vehicle_int *vehicle;
//End of code
i) Define the type (licensing) that captures the Victorian licensing database based upon your answers in part (a) above.
ii) Implement the functions that allow manipulation of all the license plates for Victorian. You should include the following functions:
1. void init_licensing(licensing *lp) — create the (empty) database;
2. void addCar(licensing l, char *m, char *o, char *a) — license a car with make and given model (m), given owner (o), and given owner’s address (a) and add it to the database (l). The licence plate should be the next in sequence;
3. char *getAddress(licensing l, char *s) — find the garage address for the car with the given licence plate (s) in the database (l). If there is no car with that licence plate, “NOT KNOWN” should be returned; and
4. int countMakeAndModel(licensing l, char *m) — calculate the total number of cars of a given make and model (m), returning the total number.
With each answer give an brief explanation behind your thought process.