# Linked List. p The every usage of the term list refers to a linear collection of data item. e.g. Shopping List. p A Shopping List contains a first element,

## Presentation on theme: "Linked List. p The every usage of the term list refers to a linear collection of data item. e.g. Shopping List. p A Shopping List contains a first element,"— Presentation transcript:

p The every usage of the term list refers to a linear collection of data item. e.g. Shopping List. p A Shopping List contains a first element, a second element……and a last element. p Frequently, we want to add items to or delete items from a list Introduction

A Shopping List Milk Eggs Butter Tomatoes Apples Oranges Bread Milk Eggs Butter Tomatoes Apples Oranges Bread Milk Eggs Butter Tomatoes Apples Oranges Bread Chicken Corn Lettuce Milk Eggs Butter Tomatoes Apples Oranges Bread Chicken Corn Lettuce

p A linked lists, or one-way list, is a linear collection of data elements, called nodes, where the linear order is given by means of pointers. p Each node is divided into 2 parts: 1. the first part contains the information of the element, and 2. the second part, called the link field or nextpointer field, contains the address of the next node in the list. Linked Lists

Linked lists p A linked list consists of a sequence of nodes connected by links, plus a header. p Each node (except the last) has a successor, and each node (except the first) has a predecessor. p Each node contains a single element (object or value), plus links to its successor and/or predecessor. antbatcat header null link node element link

Linked lists (2) p The length of a linked list is the number of nodes. p An empty linked list has no nodes. p In a linked list: p We can manipulate the individual elements. p We can manipulate the links, thus changing the linked lists very structure! (This is impossible in an array.)

Singly-linked lists (1) p A singly-linked list (SLL) consists of a sequence of nodes, connected by links in one direction only. p Each SLL node contains a single element, plus a link to the nodes successor (or a null link if the node has no successor). p An SLL header contains a link to the SLLs first node (or a null link if the SLL is empty). pigdogratcatdog

antbatcat first Example: SLL traversal Instance method (in class SLL ) to traverse an SLL: Instance method (in class SLL ) to traverse an SLL: public void printFirstToLast () { // Print all elements in this SLL, in first-to-last order. for (SLLNode curr = this.first; curr != null; curr = curr.succ) System.out.println(curr.element); } p Animation: antbatcat first curr antbatcat first curr antbatcat first curr antbatcat first curr

Bed Number Patient 1Kirk 2 3Dean 4Maxwell 5Adams 6 7Lane 8Green 9Samuels 10 11Fields 12NelsonsNext7 11 12 3 4 1 0 8 9 A hospital ward contains 12 beds, of which 9 are occupied. Suppose we want an alphabetical listing of the patients. Questions5START

Bed Number Patient 1Kirk 2 3Dean 4Maxwell 5Adams 6 7Lane 8Green 9Samuels 10 11Fields 12NelsonsNext7 11 12 3 4 1 0 8 9 Answer! PatientBed Adam5 Dean3 Fields11 Green8 Kirk1 Lane7 Maxwell4 Nelson12 Samuels9

INFO 1 2 3O 4T 5 6SPACE 7X 8 9N 10I 11E 12LINK 6 0 11 10 3 4 7 What is the actual word based on the list? Questions9START

Answer! START = 9, so INFO[9]=N LINK[9]=3, so INFO[3]=O LINK[3]=6, so INFO[6]=SPACE LINK[6]=11, so INFO[11]=E LINK[11]=7, so INFO[7]=X LINK[7]=10, so INFO[10]=I LINK[10]=4, so INFO[4]=T LINK[4]=0 – a NULL Value INFO 1 2 3O 4T 5 6SPACE 7X 8 9N 10I 11E 12LINK 6 0 11 10 3 4 7 9START

TEST 174 282 384 478 574 6100 7 888 962 1074 1193 12LINK11 0 9 0 6 10 1 5 4 3 What is the score of both SCIENCE & ART? Questions3SCIENCE8ART

TEST 174 282 384 478 574 6100 7 888 962 1074 1193 12LINK11 0 9 0 6 10 1 5 4 2 SCIENCE 84, 62, 74, 100, 74 78 ART 88, 74, 93, 82 Answer:3SCIENCE8ART

Customer 1Vito 2Hunter 3Katz 4Evans 5Rogers 6Tellers 7Jones 8Grant 9McBride 10Weston 11Scott 12AdamsLINK3 9 0 0 10 7 12 11 4 0 1 5 Suppose a brokerage firm has 4 broker and each broker QuestionsBrokerPointer1Bond12 2Kelly3 3Hall0 4Nelson9

Customer 1Vito 2Hunter 3Katz 4Evans 5Rogers 6Tellers 7Jones 8Grant 9McBride 10Weston 11Scott 12AdamsLINK3 9 0 0 10 7 12 11 4 0 1 5 1. Bonds list of Customer would be:Grant, Scott, Vito, Katz 2. Kellys list of customer would be: Hunter, McBridge, Evans 3. Nelsons list of customer would be: Tellers, Jones, Adams, Rogers, Weston AnswerBrokerPointer1Bond8 2Kelly2 3Hall0 4Nelson6

NameSSNSEXSALARY 1DAVIS192-38-3782Female22,800 2KELLY165-64-3351Male19,000 3GREEN175-56-2251Male27,200 4BROWN178-52-1065Female14,700 5LEWIS181-58-9939Female16,400 6COHEN177-44-4557Male19,000 7RUBIN135-46-6262Female15,500 8EVAN168-56-8113Male34,200 9HARRIS208-56-1654Female22,800 10 11 12 LINK8 5 9 6 7 2 0 4 3 Question4Start

p p Each node in the linked list is a class, as shown here. data link 10 data link 15 data link 7 null Declarations for Linked Lists

data link 7 p p The data portion of each node is an int. link null public class IntNode { private int data;... } data link 15 Declarations for Linked Lists data 10

p p Each IntNode also contains a link which refers to another IntNode. data 15 data 7 public class IntNode { private int data; private IntNode link;... } Declarations for Linked Lists data 10 link null link

Declarations for Linked Lists p p A program can keep track of the front node by using a variable such as head in this example. p p Notice that head is not an IntNode -- it is a reference to an IntNode. data link 10 data link 15 data link 7 null head

Declarations for Linked Lists p p A program can keep track of the front node by using an IntNode reference variable such as head. p p Notice that head is not an IntNode -- it is a reference to an IntNode. We represent the empty list by storing null in the head reference. head null

Inserting an IntNode at the Front We want to add a new entry, 13, to the front of the linked list shown here. 10 1515 7 null head

Inserting an IntNode at the Front ¶ ¶Create a new node... 10 1515 7 null head

Inserting an IntNode at the Front ¶ ¶Create a new node... · ·Place the data in the new node's data field. 10 1515 7 null head 13

Inserting an IntNode at the Front 10 1515 7 null head 13 ¶ ¶Create a new node... · ·Place the data in the new node's data field.... Ž ŽConnect the new node to the front of the list.

Inserting an IntNode at the Front 10 1515 7 null head 13 ¶Create a new node... ·Place the data in the new node's data field.... Ž Connect the new node to the front of the list. ¹Make the head refer to the new head of the linked list.

Inserting an IntNode at the Front 10 1515 7 null head 13 ¶Create a new node... ·Place the data in the new node's data field.... Ž Connect the new node to the front of the list. ¹Make the head refer to the new head of the linked list.

Pseudocode for Inserting IntNodes p p IntNodes are often inserted at places other than the front of a linked list. p p There is a general pseudocode that you can follow for any insertion function...

Pseudocode for Inserting IntNodes ¶ ¶Determine whether the new node will be the first node in the linked list. If so, then there is only one step: head = new IntNode(newEntry, head);

Pseudocode for Inserting IntNodes ·Otherwise (if the new node will not be first): Start by setting a reference named previous to refer to the node which is just before the new node's position.

Pseudocode for Inserting IntNodes 15 1010 7 null head ·Otherwise (if the new node will not be first): Start by setting a reference named previous to refer to the node which is just before the new node's position. In this example, the new node will be the second node In this example, the new node will be the second node previous

Pseudocode for Inserting IntNodes 15 1010 7 null head ·Otherwise (if the new node will not be first): Start by setting a reference named previous to refer to the node which is just before the new node's position What is the name of this link? Look at the link which is in the node previous Look at the link which is in the node previous

Pseudocode for Inserting IntNodes 15 1010 7 null head ·Otherwise (if the new node will not be first): Start by setting a reference named previous to refer to the node which is just before the new node's position This link is called previous.link This link is called previous.link What is the name of this link ? previous

Pseudocode for Inserting IntNodes 15 1010 7 null head ËOtherwise (if the new node will not be first): Start by setting a reference named previous to refer to the node which is just before the new node's position previous.link refers to the head of a small linked list, with 10 and 7 previous.link refers to the head of a small linked list, with 10 and 7 previous

Pseudocode for Inserting IntNodes 15 1010 7 null head ·Otherwise (if the new node will not be first): Start by setting a reference named previous to refer to the node which is just before the new node's position. The new node must be inserted at the front of this small linked list. The new node must be inserted at the front of this small linked list. 13 Write one Java statement which will do the insertion. previous

Pseudocode for Inserting IntNodes 15 1010 7 null head ·Otherwise (if the new node will not be first): Start by setting a reference named previous to refer to the node which is just before the new node's position. 13 Write one Java statement which will do the insertion. previous previous.link = new IntNode(newEntry, previous.link);

Pseudocode for Removing IntNodes p p IntNodes often need to be removed from a linked list. p p As with insertion, there is a technique for removing a node from the front of a list, and a technique for removing a node from elsewhere. p p Well look at the technique for removing a node from the front of a linked list.

Removing the Head IntNode 10 1515 7 null head 13 Draw the change that this statement will make to the linked list.