ECE 242 Data Structures Lecture 6 Linked Lists September 21, 2009 - - PDF document

ece 242 data structures
SMART_READER_LITE
LIVE PREVIEW

ECE 242 Data Structures Lecture 6 Linked Lists September 21, 2009 - - PDF document

ECE 242 Data Structures Lecture 6 Linked Lists September 21, 2009 ECE242 L6: Linked Lists Overview Problem: Can we implement data structures using something other than arrays? Individual objects can be more flexible Use references


slide-1
SLIDE 1

ECE242 L6: Linked Lists September 21, 2009

ECE 242 Data Structures

Lecture 6

Linked Lists

ECE242 L6: Linked Lists September 21, 2009

Overview °Problem: Can we implement data structures using something other than arrays?

  • Individual objects can be more flexible
  • Use references to find “neighbors”

°Iterators will be important tools for linked lists

  • Search through the list

°Easier to implement than arrays. A little harder to visualize conceptually

slide-2
SLIDE 2

ECE242 L6: Linked Lists September 21, 2009

ArrayList Implementation - Delete An Item

Operation: delete(2)

A 1 2

maxsize-1

3 4 B C D E

Remove an item at position 2

pos A 1 2

maxsize-1

3 B D E

Count=4 pos=2 Count=5

Implementation is slow and costly Need to know max size of array

ECE242 L6: Linked Lists September 21, 2009

Another Implementation of List °Linked List b a c null °Take as much memory as needed

  • no more and no less
  • allocate the memory dynamically if needed

°No need to move items around

slide-3
SLIDE 3

ECE242 L6: Linked Lists September 21, 2009

Advantage of Linked List

° Nodes can be located anywhere in the memory. ° Getting from one node to another by storing the reference of the next node ° Insertion/removal does not require moving other items

b a e null c d

Object

ECE242 L6: Linked Lists September 21, 2009

Simple Linked List °Singly Linked List (SLList)

  • A sequence of nodes

°Each node contains two fields

  • Item
  • Reference to next node

b a c null head Node: its value is “a”, this node also has a link which points to its succeeding node

slide-4
SLIDE 4

ECE242 L6: Linked Lists September 21, 2009

Node Definition

° Define an abstract object Node:

private class Node { private Object item; Node next; }

° Example for Employee Node:

private class Node { Employee e; Node next; }

ECE242 L6: Linked Lists September 21, 2009

Singly Linked List --- head/tail °Important variables in Singly Linked List

  • head

Indicates the beginning of the List

  • tail

Indicates the end of the List

node1 node2 node3 head tail

slide-5
SLIDE 5

ECE242 L6: Linked Lists September 21, 2009

Search() Method In Listed Link ° For an empty list, return empty list ° For a nonempty list

  • Search for the wantedNode from head, print the record if matched

node1 node2 node3 head tail wantedNode

ECE242 L6: Linked Lists September 21, 2009

Size() Method In Listed Link ° For an empty list, return size 0 ° For a nonempty list

  • count the total number of nodes in the Linked List

node1 node2 node3 head tail

slide-6
SLIDE 6

ECE242 L6: Linked Lists September 21, 2009

Add New Node ° Case 1: for an empty list

  • set head and tail to newNode

tail newNode head ° Case 2: for a non-empty list, find where newNode should be inserted

  • (a) insert in front of head
  • (b) insert in the middle of list
  • (c) insert after tail

node1 node2 node3 head tail

ECE242 L6: Linked Lists September 21, 2009

head node1 node2 node3 tail Add New Node --- Case 2 (a) °(a) Insert newNode in front of head newNode head

slide-7
SLIDE 7

ECE242 L6: Linked Lists September 21, 2009

Add New Node --- Case 2 (b) node1 node2 node4 tail head node3

  • (b) Insert newNode in the middle of list

– Suppose newNode needs to be inserted between node 2

and node 3

ECE242 L6: Linked Lists September 21, 2009

Add New Node --- Case 2 (b) newNode node1 node2 node4 tail head node3

  • (b) Insert newNode in the middle of list

– Suppose newNode needs to be inserted between node 2

and node 3

slide-8
SLIDE 8

ECE242 L6: Linked Lists September 21, 2009

Add New Node --- Case 2 (b) node1 node2 node4 tail head node3

  • (b) Insert newNode in the middle of list

– Suppose newNode needs to be inserted between node 2

and node 3 newNode

ECE242 L6: Linked Lists September 21, 2009

Add New Node --- Case 2 (b) node1 node2 node4 tail head node3

  • (b) Insert newNode in the middle of list

– Suppose newNode needs to be inserted between node 2

and node 3 newNode

slide-9
SLIDE 9

ECE242 L6: Linked Lists September 21, 2009

Add New Node --- Case 2 (c) °(c) Insert newNode after tail node2 node3 tail node1 head

ECE242 L6: Linked Lists September 21, 2009

newNode Add New Node --- Case 2 (c) °(c) Insert newNode after tail node2 node3 tail node1 head

slide-10
SLIDE 10

ECE242 L6: Linked Lists September 21, 2009

newNode Add New Node --- Case 2 (c) °(c) Insert newNode after tail node2 node3 tail node1 head

ECE242 L6: Linked Lists September 21, 2009

newNode Add New Node --- Case 2 (c) °(c) Insert newNode after tail node2 node3 tail node1 head tail

slide-11
SLIDE 11

ECE242 L6: Linked Lists September 21, 2009

Delete Node --- Case 2 (a)

°(a): wantedNode is both head and tail

head node 1 tail head=null tail=null after deletion

ECE242 L6: Linked Lists September 21, 2009

node2 node3 tail head node1 Delete Method --- Case 2(b) °(b): wantedNode is head, but not tail

  • Suppose node 1 needs to be deleted
slide-12
SLIDE 12

ECE242 L6: Linked Lists September 21, 2009

Delete Method --- Case 2(b) °(b): wantedNode is head, but not tail

  • Suppose node 1 needs to be deleted

node2 node3 tail node1 head

ECE242 L6: Linked Lists September 21, 2009

node2 node3 tail Delete Method --- Case 2(b) °(b): wantedNode is head, but not tail head

slide-13
SLIDE 13

ECE242 L6: Linked Lists September 21, 2009

Delete Method --- Case 2(c) °(c): wantedNode is not head, not tail

  • Suppose node2 needs to be deleted

node1 node2 node3 head tail To be deleted

ECE242 L6: Linked Lists September 21, 2009

Delete Method --- Case 2(c) °(c): wantedNode is not head, not tail

  • Suppose node2 needs to be deleted

node1 node2 node3 head tail To be deleted

slide-14
SLIDE 14

ECE242 L6: Linked Lists September 21, 2009

Delete Method --- Case 2(c) °(c): wantedNode is not head, not tail

  • Suppose node2 needs to be deleted

node1 node3 head tail

ECE242 L6: Linked Lists September 21, 2009

node2 node3 tail Delete Method --- Case 2(d) °(d): wantedNode is not head, but tail head node1

slide-15
SLIDE 15

ECE242 L6: Linked Lists September 21, 2009

node2 node3 tail Delete Method --- Case 2(d) °(d): wantedNode is not head, but tail head node1

ECE242 L6: Linked Lists September 21, 2009

node2 tail Delete Method --- Case 2(d) °(d): wantedNode is not head, but tail head node1

slide-16
SLIDE 16

ECE242 L6: Linked Lists September 21, 2009

Summary °Size grows as needed °Data manipulation is efficient

  • Add, remove, etc.

°Linked List implementation is more efficient than array °We will lots more implementations and uses of linked lists in subsequent lectures