You know, programming language structures didn’t just appear. Someone had to invent them. If you ever program in a language such as C, you will become very intimate with a concept called a pointer. Pointers were created in 1964 by Harold “Bud” Lawson, whilst working for IBM. The concept of pointers was then used to create more complex data structures such as lists. The context for incorporating list processing was the “flexibility in manipulating collections of data” . The flexibility was attained by disassociating the logical ordering of the data from its physical organization. Enter the pointer. In PL/I a pointer was created in the following manner:
DECLARE 1 ELEMENT CONTROLLED (ELEMPTR), 2 P POINTER, 2 VALUE FIXED;
Here, ELEMPTR is the pointer variable, i.e. ELEMPTR contains the value which “points to” a list element. Not exactly an elegant piece of code. PL/I itself was suppose to supplant both Cobol and Fortran, but that was not to be. It was successfully used to develop the MULTICS operating system, which relied heavily on the use of pointer variables. Multics influenced the design of nearly all modern operating systems,
Lawson’s 1967 paper “PL/I list processing” is a nice introduction to basic data structures.
 Lawson, H., “PL/I List Processing”, Communications of the ACM, 10(6), pp.358-367 (1967)