chap listsstacksand queues in figure you should note the use of the static definition for the freelist header the purpose of the keyword static is to create single variable shared among all instances of the link nodes we want only single freelist for all link nodes of given type program might create multiple lists if they are all of the same type (that istheir element types are the same)then they can and should share the same freelist this will happen with the implementation of figure if lists are created that have different element typesbecause this code is implemented with genericthe need for different list implementations will be discovered by the runtime environment separate versions of the list class will be generated for each element type thuseach element type will also get its own separate copy of the link class and each distinct link class implementation will get separate freelist let' consider more complex situation where we want separate freelistsbut we don' know this until runtime for exampleperhaps we are using lists to store variable-length strings given node gets space allocated for string of specific length we' like to be able to reuse the nodes by placing them on freelistinstead of relying on the system free store operators but we cannot reuse given list node unless the size allocated for its string matches the length of the string we want to store in this node thuseach specific node size must be stored on its own freelist that isthe nodes for strings of length one are stored on one freelistthe nodes for strings of length two on another freelistand so on in this wayits easy to find node of the proper size unfortunatelywe don' know in advance what the various sizes of strings will be if we want to support long stringsthen there could be thousands of different node sizesmany of which are not used in any particular run of the program thuswe do not want to allocate freelists in advance for each potential node length on the other handwe need to make sure no more than one copy of the freelist for given size is created we can modify our freelist free-store operations to request the appropriate freelist this access function will search for the proper freelist if it existsthat freelist is used if notthat freelist is created comparison of list implementations now that you have seen two substantially different implementations for listsit is natural to ask which is better in particularif you must implement list for some taskwhich implementation should you choosearray-based lists have the disadvantage that their size must be predetermined before the array can be allocated array-based lists cannot grow beyond their pre