1 / 42

Arrays & Linked Lists

Arrays & Linked Lists. Part 1: Arrays. Array Definition.

verna
Download Presentation

Arrays & Linked Lists

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arrays & Linked Lists EECS2011: Arrays & Linked Lists

  2. Part 1: Arrays EECS2011: Arrays & Linked Lists

  3. Array Definition • An array is a sequenced collection of variables all of the same type. Each variable, or cell, in an array has an index, which uniquely refers to the value stored in that cell. The cells of an array, A, are numbered 0, 1, 2, and so on. • Each value stored in an array is often called an element of that array. A 0 1 2 n i EECS2011: Arrays & Linked Lists

  4. Array Length and Capacity • Since the length of an array determines the maximum number of things that can be stored in the array, we will sometimes refer to the length of an array as its capacity. • In Java, the length of an array named a can be accessed using the syntax a.length. Thus, the cells of an array, a,are numbered 0, 1, 2, , a.length−1, and the cell with index k can be accessed with syntax a[k]. a 0 1 2 n k EECS2011: Arrays & Linked Lists

  5. Declaring Arrays (first way) • Use an assignment to a literal form when initially declaring the array, using a syntax as: • The elementTypecan be any Java primitive type or class name, and arrayNamecan be any valid Java identifier. The initial values must be of the same type as the array. EECS2011: Arrays & Linked Lists

  6. Declaring Arrays (second way) • Use the new operator. • However, because an array is not an instance of a class, we do not use a typical constructor. Instead we use the syntax: new elementType[length] • length is a positive integer denoting the length of the new array. • The new operator returns a reference to the new array, and typically this would be assigned to an array variable. EECS2011: Arrays & Linked Lists

  7. Arrays of Characters or Object References • An array can store primitive elements, such as characters. • An array can also store references to objects. EECS2011: Arrays & Linked Lists

  8. Java Example: Game Entries A game entry stores the name of a player and her best score so far in a game EECS2011: Arrays & Linked Lists

  9. Java Example: Scoreboard Keep track of players and their best scores in an array, board • The elements of board are objects of class GameEntry • Array board is sorted by score EECS2011: Arrays & Linked Lists

  10. Adding an Entry • To add an entry e into array board at index i, we need to make room for it by shifting forward the n -ientries board[i], …, board[n –1] board 0 1 2 n i board 0 1 2 n i e board 0 1 2 n i EECS2011: Arrays & Linked Lists

  11. Java Example EECS2011: Arrays & Linked Lists

  12. Removing an Entry • To remove the entry e at index i, we need to fill the hole left by e by shifting backward the n -i-1 elements board[i+1], …, board[n –1] board e 0 1 2 n i board 0 1 2 n i board 0 1 2 n i EECS2011: Arrays & Linked Lists

  13. Java Example EECS2011: Arrays & Linked Lists

  14. Multidimensional arrays • int[ ][ ] data = new int[2][3];data = { {6, 13, 17} , {45 , 67, 82} };data[0][2] = 3; // 17 replaced by 3 • String[][] irregular2DArray = { {“Friends:” , “Merry” , “Bob” , “Chris”}, {“Games:” , “baseball” , “soccer”}, {“Places:” , “Toronto” , “Boston” , “Barcelona” , “Beijing”}}; EECS2011: Arrays & Linked Lists

  15. Example: Pascal Triangle EECS2011: Arrays & Linked Lists

  16. Example: Pascal Triangle output EECS2011: Arrays & Linked Lists

  17. Some Built-in Methods in java.util.Arrays Class EECS2011: Arrays & Linked Lists

  18. Part 1: Summary • Arrays: • Definition • Declaration • Element types • Java examples • Adding & removing entries • Multidimensional arrays • Built-in Methods in java.util.Arrays Class EECS2011: Arrays & Linked Lists

  19. EECS2011: Arrays & Linked Lists

  20. Part 2: Singly Linked Lists EECS2011: Arrays & Linked Lists

  21. Singly Linked List • A singly linked list is a concrete data structure consisting of a sequence of nodes, starting from a head pointer • Each node stores • element • link to the next node next node element head  A B C D EECS2011: Arrays & Linked Lists

  22. A Nested Node Class EECS2011: Arrays & Linked Lists

  23. Accessor Methods EECS2011: Arrays & Linked Lists

  24. Inserting at the Head • Current list • Allocate new nodeInsert new elementHave new node point to old head • Update head to point to new node EECS2011: Arrays & Linked Lists

  25. Inserting at the Tail • Current list • Allocate a new nodeInsert new elementHave new node point to null • Have old last node point to new nodeUpdate tail to point to new node EECS2011: Arrays & Linked Lists

  26. Java Methods EECS2011: Arrays & Linked Lists

  27. Removing at the Head • Current list • Update head to point to next node in the list • Allow garbage collector to reclaim the former first node EECS2011: Arrays & Linked Lists

  28. Java Method EECS2011: Arrays & Linked Lists

  29. Removing at the Tail • Removing at the tail of a singly linked list is not efficient! • It’s impossible in constant-time to access the predecessor of the tail node. • You need linear-time to scan through the list from head to tail. EECS2011: Arrays & Linked Lists

  30. Part 2: Summary • Singly linked list structure • A nested node class • Accessor methods • Insertion: • at the tail • at the head • Removing • at the head • at the tail - inefficient EECS2011: Arrays & Linked Lists

  31. EECS2011: Arrays & Linked Lists

  32. Part 3: Doubly Linked Lists EECS2011: Arrays & Linked Lists

  33. Doubly Linked List • A doubly linked list can be traversed forward and backward • Nodes store: • element • link to the previous node • link to the next node • Special trailer and header nodes prev next element node trailer nodes/positions header elements EECS2011: Arrays & Linked Lists

  34. Insertion • Insert a new node, q, between p and its successor. p A B C p q A B C X p q A B X C EECS2011: Arrays & Linked Lists

  35. p A B C D Deletion • Remove a node, p, from a doubly linked list. A B C p D A B C EECS2011: Arrays & Linked Lists

  36. Doubly-Linked List in Java EECS2011: Arrays & Linked Lists

  37. Doubly-Linked List in Java, 2 EECS2011: Arrays & Linked Lists

  38. Doubly-Linked List in Java, 3 EECS2011: Arrays & Linked Lists

  39. Doubly-Linked List in Java, 4 EECS2011: Arrays & Linked Lists

  40. Circular Linked Lists • We can form a circular linked list by identifying the header and trailer sentinel nodes. • Varieties of Circular Linked Lists: • Singly Linked Circular Lists (SLCL). • Doubly Linked Circular Lists (DLCL). • With DLCL it is possible to perform the following operations in constant time: • Inserting an item at any given position in the list. • Deleting an item from any given position in the list. • Concatenating two lists of same type (by interlacing). EECS2011: Arrays & Linked Lists

  41. Part 3: Summary • Doubly linked list structure • A nested node class • Accessor methods • Insertion at any given position • Removal of any given node • Singly & Doubly Linked Circular Lists EECS2011: Arrays & Linked Lists

  42. EECS2011: Arrays & Linked Lists

More Related