SlideShare a Scribd company logo
1
Topic 11
Linked Lists
"All the kids who did great in high school writing
pong games in BASIC for their Apple II would get to
college, take CompSci 101, a data structures
course, and when they hit the pointers business their
brains would just totally explode, and the next thing
you knew, they were majoring in Political Science
because law school seemed like a better idea."
Thanks to Don Slater of CMU for use of his slides.
Clicker 1
What is output by the following code?
ArrayList<Integer> a1 = new ArrayList<>();
ArrayList<Integer> a2 = new ArrayList<>();
a1.add(12);
a2.add(12);
System.out.println(a1 == a2);
A. false
B. true
C. No output due to syntax error
D. No output due to runtime error
E. Varies from one run of the program to the next
CS314
Linked Lists
2
CS314
Linked Lists
3
Dynamic Data Structures
Dynamic data structures
– They grow and shrink one element at a time,
normally without some of the inefficiencies of
arrays
– as opposed to a static container such as an array
Big O of Array Manipulations
– Access the kth element
– Add or delete an element in the middle of the
array while maintaining relative order
– adding element at the end of array? space
avail? no space avail?
– add element at beginning of an array
Linked Lists
4
Object References
Recall that an object reference is a variable
that stores the address of an object
A reference can also be called a pointer
They are often depicted graphically:
student
John Smith
40725
3.57
CS314
Linked Lists
5
References as Links
Object references can be used to create
links between objects
Suppose a Student class contained a
reference to another Student object
John Smith
40725
3.57
Jane Jones
58821
3.72
CS314
Linked Lists
6
References as Links
References can be used to create a variety
of linked structures, such as a linked list:
studentList
CS314
CS314
Linked Lists
7
Linked Lists
A linear collection of self-referential objects, called
nodes, connected by other links
– linear: for every node in the list, there is one and only one node
that precedes it (except for possibly the first node, which may
have no predecessor,) and there is one and only one node that
succeeds it, (except for possibly the last node, which may have
no successor)
– self-referential: a node that has the ability to refer to another
node of the same type, or even to refer to itself
– node: contains data of any type, including a reference to another
node of the same data type, or to nodes of different data types
– Usually a list will have a beginning and an end; the first element
in the list is accessed by a reference to that class, and the last
node in the list will have a reference that is set to null
CS314
Linked Lists
8
Linked lists are dynamic, they can grow or shrink
as necessary
Linked lists are non-contiguous; the logical
sequence of items in the structure is decoupled
from any physical ordering in memory
Advantages of linked lists
CS314
Linked Lists
9
Nodes and Lists
A different way of implementing a list
Each element of a Linked List is a separate
Node object.
Each Node tracks a single piece of data plus
a reference (pointer) to the next
Create a new Node very time we add
something to the List
Remove nodes when item removed from list
and allow garbage collector to reclaim that
memory
CS314
Linked Lists
10
A Node Class
public class Node<E> {
private E myData;
private Node<E> myNext;
public Node()
{ myData = null; myNext = null; }
public Node(E data, Node<E> next)
{ myData = data; myNext = next; }
public E getData()
{ return myData; }
public Node<E> getNext()
{ return myNext; }
public void setData(E data)
{ myData = data; }
public void setNext(Node<E> next)
{ myNext = next; }
}
CS314
Linked Lists
11
One Implementation of a Linked List
The Nodes show on the previous slide are
singly linked
– a node refers only to the next node in the
structure
– it is also possible to have doubly linked nodes.
– The node has a reference to the next node in the
structure and the previous node in the structure
as well
How is the end of the list indicated
– myNext = null for last node
– a separate dummy node class / object
CS314
Linked Lists
12
A Linked List Implementation
public class LinkedList<E> implements IList<E>
private Node<E> head;
private Node<E> tail;
private int size;
public LinkedList(){
head = null;
tail = null;
size = 0;
}
}
LinkedList<String> list = new LinkedList<String>();
LinkedList
myHead iMySize
myTail
null
null
0
CS314
Linked Lists
13
Writing Methods
When trying to code methods for Linked
Lists draw pictures!
– If you don't draw pictures of what you are trying
to do it is very easy to make mistakes!
CS314
Linked Lists
14
add method
add to the end of list
special case if empty
steps on following slides
public void add(E obj)
CS314
Linked Lists
15
Add Element - List Empty (Before)
head tail size
null null 0
Object
item
CS314
Linked Lists
16
Add Element - List Empty (After)
head tail size
1
String
Node
myData myNext
null
CS314
Linked Lists
17
Add Element - List Not Empty (Before)
1
String
Node
myData myNext
null
head tail size
String
item
CS314
Linked Lists
18
Add Element - List Not Empty (After)
2
String
Node
myData myNext
head tail size
String
Node
myData myNext
null
CS314
Linked Lists
19
Code for default add
public void add(E obj)
Clicker 2
What is the worst case Big O for adding to
the end of an array based list and our
LinkedList314 class? The lists already
contain N items.
Array based Linked
A. O(1) O(1)
B. O(N) O(N)
C. O(logN) O(1)
D. O(1) O(N)
E. O(N) O(1)
20
CS314
Linked Lists
21
Code for addFront
add to front of list
public void addFront(E obj)
How does this compare to adding at the front
of an array based list?
Clicker 3
What is the Big O for adding to the front of
an array based list and a linked list? The lists
already contain N items.
Array based Linked
A. O(1) O(1)
B. O(N) O(1)
C. O(logN) O(1)
D. O(1) O(N)
E. O(N) O(N)
CS314
Linked Lists
22
CS314
Linked Lists
23
Code for Insert
public void insert(int pos, E obj)
Must be careful not to break the chain!
Where do we need to go?
Special cases?
Clicker 4
What is the Big O for inserting an element
into the middle of an array based list and into
the middle of a linked list? Each list already
contains N items.
Array based Linked
A. O(1) O(1)
B. O(1) O(N)
C. O(N) O(1)
D. O(N) O(N)
E. O(N) O(logN)
CS314
Linked Lists
24
Clicker Question 5
What is the Big O for getting an element
based on position from an array based list
and from a linked list? Each list contains N
items. In other words E get(int pos)
Array based Linked
A. O(1) O(1)
B. O(1) O(N)
C. O(N) O(1)
D. O(logN) O(N)
E. O(N) O(N)
Linked Lists
25
CS314
Linked Lists
26
Code for get
public E get(int pos)
The downside of Linked Lists
CS314
Linked Lists
27
Code for remove
public E remove(int pos)
Clicker 6
What is the order to remove the last element
of a singly linked list with references to the
first and last nodes of the linked structure of
nodes?
The list contains N elements
A. O(1)
B. O(logN)
C. O(N^0.5)
D. O(N)
E. O(NlogN))
CS314
Linked Lists
28
CS314
Linked Lists
29
Why Use Linked List
What operations with a Linked List faster
than the version from ArrayList?
CS314
Linked Lists
30
Clicker 7 - Getting All Elements in
Order From a Linked List
What is the Order (Big O) of the following code?
LinkedList314<Integer> list;
list = new LinkedList314<Integer>();
// code to fill list with N elements
int total = 0;
//Big O of following code?
for(int i = 0; i < list.size(); i++)
total += list.get(i);
A. O(N) B. O(2N) C. O(NlogN)
D. O(N2) E. O(N3)
Iterators to the Rescue
CS314
Linked Lists
31
CS314
Linked Lists
32
Other Possible Features of
Linked Lists
Doubly Linked
Circular
Dummy Nodes for first and last node in list
public class DLNode<E> {
private E myData;
private DLNode<E> myNext;
private DLNode<E> myPrevious;
}
CS314
Linked Lists
33
Dummy Nodes
Use of Dummy Nodes for a Doubly Linked
List removes most special cases
Also could make the Double Linked List
circular
CS314
Linked Lists
34
Doubly Linked List add
public void add(E obj)
CS314
Linked Lists
35
Insert for Doubly Linked List
public void insert(int pos, E obj)

More Related Content

Similar to topic11LinkedLists.ppt

Operations on linked list
Operations on linked listOperations on linked list
Operations on linked listSumathi Kv
 
C++ Please make sure that your answer is fully submitted .pdf
C++ Please make sure that your answer is fully submitted .pdfC++ Please make sure that your answer is fully submitted .pdf
C++ Please make sure that your answer is fully submitted .pdfaashkaahm
 
Data structures & algorithms lecture 3
Data structures & algorithms lecture 3Data structures & algorithms lecture 3
Data structures & algorithms lecture 3Poojith Chowdhary
 
introduction_dst.pptx
introduction_dst.pptxintroduction_dst.pptx
introduction_dst.pptxHammadTariq51
 
Unit ii(dsc++)
Unit ii(dsc++)Unit ii(dsc++)
Unit ii(dsc++)Durga Devi
 
Linked List Basics
Linked List BasicsLinked List Basics
Linked List BasicsKaustavRoy40
 
DS Complete notes for Computer science and Engineering
DS Complete notes for Computer science and EngineeringDS Complete notes for Computer science and Engineering
DS Complete notes for Computer science and EngineeringRAJASEKHARV8
 
Data Structures(Part 1)
Data Structures(Part 1)Data Structures(Part 1)
Data Structures(Part 1)SURBHI SAROHA
 
Fundamentals of data structures
Fundamentals of data structuresFundamentals of data structures
Fundamentals of data structuresNiraj Agarwal
 
In this lab we will write code for working with a Linked List. Node .pdf
In this lab we will write code for working with a Linked List.  Node .pdfIn this lab we will write code for working with a Linked List.  Node .pdf
In this lab we will write code for working with a Linked List. Node .pdffms12345
 
1 list datastructures
1 list datastructures1 list datastructures
1 list datastructuresNguync91368
 
Linked List Presentation in data structurepptx
Linked List Presentation in data structurepptxLinked List Presentation in data structurepptx
Linked List Presentation in data structurepptxnikhilcse1
 

Similar to topic11LinkedLists.ppt (20)

3.ppt
3.ppt3.ppt
3.ppt
 
3.ppt
3.ppt3.ppt
3.ppt
 
Operations on linked list
Operations on linked listOperations on linked list
Operations on linked list
 
C++ Please make sure that your answer is fully submitted .pdf
C++ Please make sure that your answer is fully submitted .pdfC++ Please make sure that your answer is fully submitted .pdf
C++ Please make sure that your answer is fully submitted .pdf
 
Data structures & algorithms lecture 3
Data structures & algorithms lecture 3Data structures & algorithms lecture 3
Data structures & algorithms lecture 3
 
Algo>ADT list & linked list
Algo>ADT list & linked listAlgo>ADT list & linked list
Algo>ADT list & linked list
 
introduction_dst.pptx
introduction_dst.pptxintroduction_dst.pptx
introduction_dst.pptx
 
Unit ii(dsc++)
Unit ii(dsc++)Unit ii(dsc++)
Unit ii(dsc++)
 
Linked List Basics
Linked List BasicsLinked List Basics
Linked List Basics
 
DS Complete notes for Computer science and Engineering
DS Complete notes for Computer science and EngineeringDS Complete notes for Computer science and Engineering
DS Complete notes for Computer science and Engineering
 
Data structure
 Data structure Data structure
Data structure
 
Data Structures(Part 1)
Data Structures(Part 1)Data Structures(Part 1)
Data Structures(Part 1)
 
Ch13
Ch13Ch13
Ch13
 
Fundamentals of data structures
Fundamentals of data structuresFundamentals of data structures
Fundamentals of data structures
 
Linked List
Linked ListLinked List
Linked List
 
03-Lists.ppt
03-Lists.ppt03-Lists.ppt
03-Lists.ppt
 
In this lab we will write code for working with a Linked List. Node .pdf
In this lab we will write code for working with a Linked List.  Node .pdfIn this lab we will write code for working with a Linked List.  Node .pdf
In this lab we will write code for working with a Linked List. Node .pdf
 
1 list datastructures
1 list datastructures1 list datastructures
1 list datastructures
 
linked_lists
linked_listslinked_lists
linked_lists
 
Linked List Presentation in data structurepptx
Linked List Presentation in data structurepptxLinked List Presentation in data structurepptx
Linked List Presentation in data structurepptx
 

More from ArifKamal36

03-arrays-pointers.ppt
03-arrays-pointers.ppt03-arrays-pointers.ppt
03-arrays-pointers.pptArifKamal36
 
html-lists-tables.ppt
html-lists-tables.ppthtml-lists-tables.ppt
html-lists-tables.pptArifKamal36
 
Basic-HTML.9526794.powerpoint.pptx
Basic-HTML.9526794.powerpoint.pptxBasic-HTML.9526794.powerpoint.pptx
Basic-HTML.9526794.powerpoint.pptxArifKamal36
 
Lecture 1. Data Structure & Algorithm.pptx
Lecture 1. Data Structure & Algorithm.pptxLecture 1. Data Structure & Algorithm.pptx
Lecture 1. Data Structure & Algorithm.pptxArifKamal36
 
CH5_Linked List.ppt
CH5_Linked List.pptCH5_Linked List.ppt
CH5_Linked List.pptArifKamal36
 
IAT334-Lec01-Intro.pptx
IAT334-Lec01-Intro.pptxIAT334-Lec01-Intro.pptx
IAT334-Lec01-Intro.pptxArifKamal36
 

More from ArifKamal36 (13)

03-arrays-pointers.ppt
03-arrays-pointers.ppt03-arrays-pointers.ppt
03-arrays-pointers.ppt
 
html-lists-tables.ppt
html-lists-tables.ppthtml-lists-tables.ppt
html-lists-tables.ppt
 
HTMLTables.ppt
HTMLTables.pptHTMLTables.ppt
HTMLTables.ppt
 
Basic-HTML.9526794.powerpoint.pptx
Basic-HTML.9526794.powerpoint.pptxBasic-HTML.9526794.powerpoint.pptx
Basic-HTML.9526794.powerpoint.pptx
 
Lecture 1. Data Structure & Algorithm.pptx
Lecture 1. Data Structure & Algorithm.pptxLecture 1. Data Structure & Algorithm.pptx
Lecture 1. Data Structure & Algorithm.pptx
 
DS1.pptx
DS1.pptxDS1.pptx
DS1.pptx
 
2.ppt
2.ppt2.ppt
2.ppt
 
1.ppt
1.ppt1.ppt
1.ppt
 
CH5_Linked List.ppt
CH5_Linked List.pptCH5_Linked List.ppt
CH5_Linked List.ppt
 
Games.ppt
Games.pptGames.ppt
Games.ppt
 
IAT334-Lec01-Intro.pptx
IAT334-Lec01-Intro.pptxIAT334-Lec01-Intro.pptx
IAT334-Lec01-Intro.pptx
 
9916167.ppt
9916167.ppt9916167.ppt
9916167.ppt
 
e3-chap-01.ppt
e3-chap-01.ppte3-chap-01.ppt
e3-chap-01.ppt
 

Recently uploaded

Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀DianaGray10
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxJennifer Lim
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024Stephanie Beckett
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...Product School
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...Product School
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfChristopherTHyatt
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxAbida Shariff
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka DoktorováCzechDreamin
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsStefano
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Product School
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsPaul Groth
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...Product School
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backElena Simperl
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...CzechDreamin
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 

Recently uploaded (20)

Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 

topic11LinkedLists.ppt

  • 1. 1 Topic 11 Linked Lists "All the kids who did great in high school writing pong games in BASIC for their Apple II would get to college, take CompSci 101, a data structures course, and when they hit the pointers business their brains would just totally explode, and the next thing you knew, they were majoring in Political Science because law school seemed like a better idea." Thanks to Don Slater of CMU for use of his slides.
  • 2. Clicker 1 What is output by the following code? ArrayList<Integer> a1 = new ArrayList<>(); ArrayList<Integer> a2 = new ArrayList<>(); a1.add(12); a2.add(12); System.out.println(a1 == a2); A. false B. true C. No output due to syntax error D. No output due to runtime error E. Varies from one run of the program to the next CS314 Linked Lists 2
  • 3. CS314 Linked Lists 3 Dynamic Data Structures Dynamic data structures – They grow and shrink one element at a time, normally without some of the inefficiencies of arrays – as opposed to a static container such as an array Big O of Array Manipulations – Access the kth element – Add or delete an element in the middle of the array while maintaining relative order – adding element at the end of array? space avail? no space avail? – add element at beginning of an array
  • 4. Linked Lists 4 Object References Recall that an object reference is a variable that stores the address of an object A reference can also be called a pointer They are often depicted graphically: student John Smith 40725 3.57 CS314
  • 5. Linked Lists 5 References as Links Object references can be used to create links between objects Suppose a Student class contained a reference to another Student object John Smith 40725 3.57 Jane Jones 58821 3.72 CS314
  • 6. Linked Lists 6 References as Links References can be used to create a variety of linked structures, such as a linked list: studentList CS314
  • 7. CS314 Linked Lists 7 Linked Lists A linear collection of self-referential objects, called nodes, connected by other links – linear: for every node in the list, there is one and only one node that precedes it (except for possibly the first node, which may have no predecessor,) and there is one and only one node that succeeds it, (except for possibly the last node, which may have no successor) – self-referential: a node that has the ability to refer to another node of the same type, or even to refer to itself – node: contains data of any type, including a reference to another node of the same data type, or to nodes of different data types – Usually a list will have a beginning and an end; the first element in the list is accessed by a reference to that class, and the last node in the list will have a reference that is set to null
  • 8. CS314 Linked Lists 8 Linked lists are dynamic, they can grow or shrink as necessary Linked lists are non-contiguous; the logical sequence of items in the structure is decoupled from any physical ordering in memory Advantages of linked lists
  • 9. CS314 Linked Lists 9 Nodes and Lists A different way of implementing a list Each element of a Linked List is a separate Node object. Each Node tracks a single piece of data plus a reference (pointer) to the next Create a new Node very time we add something to the List Remove nodes when item removed from list and allow garbage collector to reclaim that memory
  • 10. CS314 Linked Lists 10 A Node Class public class Node<E> { private E myData; private Node<E> myNext; public Node() { myData = null; myNext = null; } public Node(E data, Node<E> next) { myData = data; myNext = next; } public E getData() { return myData; } public Node<E> getNext() { return myNext; } public void setData(E data) { myData = data; } public void setNext(Node<E> next) { myNext = next; } }
  • 11. CS314 Linked Lists 11 One Implementation of a Linked List The Nodes show on the previous slide are singly linked – a node refers only to the next node in the structure – it is also possible to have doubly linked nodes. – The node has a reference to the next node in the structure and the previous node in the structure as well How is the end of the list indicated – myNext = null for last node – a separate dummy node class / object
  • 12. CS314 Linked Lists 12 A Linked List Implementation public class LinkedList<E> implements IList<E> private Node<E> head; private Node<E> tail; private int size; public LinkedList(){ head = null; tail = null; size = 0; } } LinkedList<String> list = new LinkedList<String>(); LinkedList myHead iMySize myTail null null 0
  • 13. CS314 Linked Lists 13 Writing Methods When trying to code methods for Linked Lists draw pictures! – If you don't draw pictures of what you are trying to do it is very easy to make mistakes!
  • 14. CS314 Linked Lists 14 add method add to the end of list special case if empty steps on following slides public void add(E obj)
  • 15. CS314 Linked Lists 15 Add Element - List Empty (Before) head tail size null null 0 Object item
  • 16. CS314 Linked Lists 16 Add Element - List Empty (After) head tail size 1 String Node myData myNext null
  • 17. CS314 Linked Lists 17 Add Element - List Not Empty (Before) 1 String Node myData myNext null head tail size String item
  • 18. CS314 Linked Lists 18 Add Element - List Not Empty (After) 2 String Node myData myNext head tail size String Node myData myNext null
  • 19. CS314 Linked Lists 19 Code for default add public void add(E obj)
  • 20. Clicker 2 What is the worst case Big O for adding to the end of an array based list and our LinkedList314 class? The lists already contain N items. Array based Linked A. O(1) O(1) B. O(N) O(N) C. O(logN) O(1) D. O(1) O(N) E. O(N) O(1) 20
  • 21. CS314 Linked Lists 21 Code for addFront add to front of list public void addFront(E obj) How does this compare to adding at the front of an array based list?
  • 22. Clicker 3 What is the Big O for adding to the front of an array based list and a linked list? The lists already contain N items. Array based Linked A. O(1) O(1) B. O(N) O(1) C. O(logN) O(1) D. O(1) O(N) E. O(N) O(N) CS314 Linked Lists 22
  • 23. CS314 Linked Lists 23 Code for Insert public void insert(int pos, E obj) Must be careful not to break the chain! Where do we need to go? Special cases?
  • 24. Clicker 4 What is the Big O for inserting an element into the middle of an array based list and into the middle of a linked list? Each list already contains N items. Array based Linked A. O(1) O(1) B. O(1) O(N) C. O(N) O(1) D. O(N) O(N) E. O(N) O(logN) CS314 Linked Lists 24
  • 25. Clicker Question 5 What is the Big O for getting an element based on position from an array based list and from a linked list? Each list contains N items. In other words E get(int pos) Array based Linked A. O(1) O(1) B. O(1) O(N) C. O(N) O(1) D. O(logN) O(N) E. O(N) O(N) Linked Lists 25
  • 26. CS314 Linked Lists 26 Code for get public E get(int pos) The downside of Linked Lists
  • 27. CS314 Linked Lists 27 Code for remove public E remove(int pos)
  • 28. Clicker 6 What is the order to remove the last element of a singly linked list with references to the first and last nodes of the linked structure of nodes? The list contains N elements A. O(1) B. O(logN) C. O(N^0.5) D. O(N) E. O(NlogN)) CS314 Linked Lists 28
  • 29. CS314 Linked Lists 29 Why Use Linked List What operations with a Linked List faster than the version from ArrayList?
  • 30. CS314 Linked Lists 30 Clicker 7 - Getting All Elements in Order From a Linked List What is the Order (Big O) of the following code? LinkedList314<Integer> list; list = new LinkedList314<Integer>(); // code to fill list with N elements int total = 0; //Big O of following code? for(int i = 0; i < list.size(); i++) total += list.get(i); A. O(N) B. O(2N) C. O(NlogN) D. O(N2) E. O(N3)
  • 31. Iterators to the Rescue CS314 Linked Lists 31
  • 32. CS314 Linked Lists 32 Other Possible Features of Linked Lists Doubly Linked Circular Dummy Nodes for first and last node in list public class DLNode<E> { private E myData; private DLNode<E> myNext; private DLNode<E> myPrevious; }
  • 33. CS314 Linked Lists 33 Dummy Nodes Use of Dummy Nodes for a Doubly Linked List removes most special cases Also could make the Double Linked List circular
  • 34. CS314 Linked Lists 34 Doubly Linked List add public void add(E obj)
  • 35. CS314 Linked Lists 35 Insert for Doubly Linked List public void insert(int pos, E obj)