fundamental data structures introduction the modern digital computer was invented and intended as device that should facilitate and speed up complicated and time-consuming computations in the majority of applications its capability to store and access large amounts of information plays the dominant part and is considered to be its primary characteristicand its ability to computei to calculateto perform arithmetichas in many cases become almost irrelevant in all these casesthe large amount of information that is to be processed in some sense represents an abstraction of part of reality the information that is available to the computer consists of selected set of data about the actual problemnamely that set that is considered relevant to the problem at handthat set from which it is believed that the desired results can be derived the data represent an abstraction of reality in the sense that certain properties and characteristics of the real objects are ignored because they are peripheral and irrelevant to the particular problem an abstraction is thereby also simplification of facts we may regard personnel file of an employer as an example every employee is represented (abstractedon this file by set of data relevant either to the employer or to his accounting procedures this set may include some identification of the employeefor examplehis or her name and salary but it will most probably not include irrelevant data such as the hair colorweightand height in solving problem with or without computer it is necessary to choose an abstraction of realityi to define set of data that is to represent the real situation this choice must be guided by the problem to be solved then follows choice of representation of this information this choice is guided by the tool that is to solve the problemi by the facilities offered by the computer in most cases these two steps are not entirely separable the choice of representation of data is often fairly difficult oneand it is not uniquely determined by the facilities available it must always be taken in the light of the operations that are to be performed on the data good example is the representation of numberswhich are themselves abstractions of properties of objects to be characterized if addition is the only (or at least the dominantoperation to be performedthen good way to represent the number is to write strokes the addition rule on this representation is indeed very obvious and simple the roman numerals are based on the same principle of simplicityand the adding rules are similarly straightforward for small numbers on the other handthe representation by arabic numerals requires rules that are far from obvious (for small numbersand they must be memorized howeverthe situation is reversed when we consider either addition of large numbers or multiplication and division the decomposition of these operations into simpler ones is much easier in the case of representation by arabic numerals because of their systematic structuring principle that is based on positional weight of the digits it is generally known that computers use an internal representation based on binary digits (bitsthis representation is unsuitable for human beings because of the usually large number of digits involvedbut it is most suitable for electronic circuits because the two values and can be represented conveniently and reliably by the presence or absence of electric currentselectric chargeor magnetic fields from this example we can also see that the question of representation often transcends several levels of detail given the problem of representingsaythe position of an objectthe first decision may lead to the choice of pair of real numbers insayeither cartesian or polar coordinates the second decision may lead to floating-point representationwhere every real number consists of pair of integers denoting fraction and an exponent to certain base (such that ethe third decisionbased on the