11 November 2014Birkbeck College, U. London1 Introduction to Computer Systems Lecturer: Steve Maybank Department of Computer Science and Information Systems Autumn 2014 Week 7b: Pointers and Linked Lists
Review: Arrays An array is a block of values of the same type. Eg. A 2D array of size 10x November 2014Birkbeck College, U. London2
Review: Array Indexing There is a standard way of referring to the entries in an array. Eg. In Java: A[0], A[9], B[12,1]. In 2D arrays, the order of the indices is row then column. 11 November 2014Birkbeck College, U. London3
Three Dimensional Arrays If C is a 3D array of size 10x10x10, if each entry occupies one memory cell and if C[0,0,0] is stored at x, then C[i, j, k] is stored at x+100*i+10*j+k Thus C[2,5,1] is stored at x+100*2+10*5+1 = x November 2014Birkbeck College, U. London4
11 November 2014Brookshear, Sections 8.2 and 8.75 Pointers A pointer is a storage area containing the address at which a piece of information is stored. Example: the program counter in the CPU The programme counter points to memory cell 207 which contains the value 60. programme counter
11 November 2014Brookshear, Section 8.26 Why are Pointers Useful? Each pointer contains a relatively small number of bits. It is easier to move or copy pointers rather than move or copy the data they point to.
11 November 2014Birkbeck College, U. London7 Example: Sorting AZM AZM Array of pointers Data in memory Data in memory Sorted array of pointers
11 November 2014Brookshear, Section 8.28 Example: Alternative List … A Farewell to Arms Hemingway Pointer … For Whom the Bell Tolls Hemingway Pointer … The Sun Also Rises Hemingway Pointer …
11 November 2014Brookshear, Sections 8.1 and 8.39 Lists A list is a collection of data whose entries are arranged sequentially. Example of a list with 4 entries: addressphotodatetel. The entries vary widely in size.
11 November 2014Brookshear, Section Contiguous Storage of a List List entries are stored consecutively in memory Advantage: simple Disadvantage: insertion and deletion are difficult.
11 November 2014Brookshear, Section Linked Lists Each list entry contains a pointer to the next entry List entries can be stored in any part of memory. There is a special head pointer for the first entry and a Nil pointer in the last entry.
11 November 2014Brookshear, Section Example of a Linked List photo86address7date87telNil Head
11 November 2014Brookshear, Section Deletion Find the preceding list item f1 and the following list item f2. Set f1.pointer=f2 datapointer datapointer datapointer f1 f2 deleted entry new pointer old pointer
11 November 2014Brookshear, Section Insertion to insert after a list item f1 set newEntry.pointer = f1.pointer f1.pointer = location of newEntry datapointer datapointer datapointer new pointer old pointer f1 newEntrynew pointer
11 November 2014Birkbeck College, U. London15 Pseudocode for Pointers Assign the value 4 to x: f1.x = 4 Point to the next item: f1.next = f2 pointer f1 variable xpointer next
11 November 2014Birkbeck College, U. London16 Printing a Linked List f = head(L); While (f<>nil) print(f.data); f = f.next; EndWhile
Example of a Tree 11 November 2014Birkbeck College, U. London17 S N VP V NP John hit DN the ball S: sentence NP: noun phrase VP: verb phrase N: noun V: verb D: determiner Colour: data Tree: hidden structure
Binary Tree Each node has the form 11 November 2014Brookshear, Sections 8.3, dataleft pointerright pointer A B C D
Binary Tree Stored in Memory A3339B36nilC D 11 November 2014Birkbeck College, U. London