Presentation is loading. Please wait.

Presentation is loading. Please wait.

Linked Lists. Example We would like to keep a list of inventory records – but only as many as we need An array is a fixed size Instead – use a linked.

Similar presentations


Presentation on theme: "Linked Lists. Example We would like to keep a list of inventory records – but only as many as we need An array is a fixed size Instead – use a linked."— Presentation transcript:

1 Linked Lists

2 Example We would like to keep a list of inventory records – but only as many as we need An array is a fixed size Instead – use a linked list What are the disadvantages of using a linked list?

3 Linked List Node – one element of the linked list –Object – data stored in the node – examples? –next_ptr – a pointer to the next node in the list last node points to NULL Object next_ptr Ø Object next_ptr Object next_ptr

4 Linked List head keeps track of the head of the list tail keeps track of the last node in the list –tail not always used Object next_ptr Ø Object next_ptr Object next_ptr head tail

5 Insertion at Head Object1 next_ptr Ø head Object2 next_ptr Object3 next_ptr Insert here new_node tail

6 Insertion at Head Create new_node –store object in new_node Point new_node next_ptr to the node head points to Object1 next_ptr Ø head Object2 next_ptr Object3 next_ptr new_node tail

7 Insertion at Head Create new_node –store object in new_node Point new_node next_ptr to the node head points to Point head to new_node Object1 next_ptr Ø head Object2 next_ptr Object3 next_ptr new_node tail

8 Insertion at Head Does this algorithm work for the list below? Object1 next_ptr Ø head Object2 next_ptr Object3 next_ptr Ø head Object3 next_ptr new_node tail

9 Insertion at Head Create new_node –store object in new_node Point new_node next_ptr to the node head points to Point head to new_node If tail points to NULL –point tail to new_node

10 Insertion at Head Create new_node –store object in new_node Point new_node next_ptr to the node head points to Point head to new_node If tail points to NULL –point tail to new_node Ø head Object3 next_ptr new_nodetail

11 Insertion at Tail Ø head Object3 next_ptr new_nodetail Object1 next_ptr Ø head Object2 next_ptr Object3 next_ptr Insert here tail new_node

12 Find find(3) find(16) - always remember to deal with special cases 5 next_ptr Ø 3 12 next_ptr head tail

13 Deletion Deletion of head –Complexity? Deletion of tail –Complexity? Object1 next_ptr Ø head Object2 next_ptr Object3 next_ptr tail

14 Insertion/Deletion in Middle Insert between Object1 and Object2 Delete Object1 Object1 next_ptr Ø head Object2 next_ptr Object3 next_ptr tail

15 Exercises Recursively count number of nodes Reverse list Swap two nodes

16 Doubly Linked Lists Each node keeps a pointer to the next node and to the previous node –Makes some operations (such as insertion at end) more efficient –Costs? At the beginning and end of the list are sentinel nodes –Simplify insertion/deletion algorithm Object3 prev_ptr next_ptr trailer Object2 prev_ptr next_ptr Object1 prev_ptr next_ptr header

17 Doubly Linked Lists Insertion and deletion at beginning/end Insertion and deletion in middle Object3 prev_ptr next_ptr trailer Object2 prev_ptr next_ptr Object1 prev_ptr next_ptr header trailerheader

18 Doubly Linked Lists Insertion Object3 prev_ptr next_ptr trailer Object2 prev_ptr next_ptr Object1 prev_ptr next_ptr header Object4 prev_ptr next_ptr insert here new_node

19 Doubly Linked Lists Insertion at head 1.Set next_ptr of new_node to point to what header’s next_ptr points to 2.Set prev_ptr of node that header’s next_ptr points to to point to new_node 3.Set prev_ptr of new_node to point to header 4.Set header’s next_ptr to point to new_node Number 1 must come before number 4 Insertion at trailer? Deletion? Object3 prev_ptr next_ptr trailer Object2 prev_ptr next_ptr Object1 prev_ptr next_ptr header Object4 prev_ptr next_ptr insert here new_node


Download ppt "Linked Lists. Example We would like to keep a list of inventory records – but only as many as we need An array is a fixed size Instead – use a linked."

Similar presentations


Ads by Google