0% found this document useful (0 votes)
4 views

3

Uploaded by

ityourboyarka27
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

3

Uploaded by

ityourboyarka27
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 58

Book

A Simplified Approach
to
Data Structures
Prof.(Dr.)Vishal Goyal, Professor, Punjabi University Patiala
Dr. Lalit Goyal, Associate Professor, DAV College, Jalandhar
Mr. Pawan Kumar, Assistant Professor, DAV College, Bhatinda

Shroff Publications and Distributors


Edition 2014

Prof.(Dr.) Vishal Goyal,Department of Computer Science, Punjabi University Pa


ONE-WAY LINK LIST

2
Contents

• Introduction To Linked list

• Introduction To One Way Linked list

• Operations on One Way Linked List

3
Introduction to Linked List

Linked List

• A linked list can be defined as the linear collection of


elements where each element is stored in a node.

• The linear order b/w elements is given by means of


pointers instead of sequential memory locations.

4
Types of Linked List

• Singular or one-way linked list.

• Doubly or two-way linked list.

• Circular linked list.

• Header linked list.

5
One Way Linked List

It is also known as singular linked list.

Each node has two parts:-

• The first part is known as info part which holds the element.

• Second part is known as next part which holds the address of


next node.

6
One Way Linked List

Info Address of next node

7
Operations of 1-Way Linked List
• Traversing a linked list.

• Searching an element in linked list

• Inserting an element in linked list

• Deleting an element in linked list

• Copying a linked list.

• Merging two linked lists

• Splitting linked list into further parts.


8
Traversing A Linked List

Traversing a linked list refers to visiting each node of the list


in order to process the elements stored in the nodes.

Example:- list of students with roll no.

Begin 401 402 414 Null

401 402 414

9
Algorithm : Traversal of linked list
Step1.If Begin=Null then
Print ”linked list is empty”
Exit
[End If]
Step2. Set Pointer =Begin
Step3.Repeat While Pointer!=Null
a. print : Pointer Info
b. Assign Pointer =Pointer Next
[End loop]
Step4.Exit

10
Searching In A Linked List

• In searching we traverse the list from begin and compare the


elements stored in each node with the desired element to be
searched

• If match is found then the address of the node is returned


otherwise we proceed to next node

• If element not found till null then search unsuccessful

11
Searching In A Link List

Begin 104 102 103 Null

Pointer

102

Item found in link list

12
Algorithm :Searching a Linked List

Step1: If Begin = Null Then


Print:”Linked List is Empty”
Exit
[End If]
Step 2: Set Pointer = Begin
Step 3: Repeat While Pointer != Null
If Pointer info = Data Then
Print : “Element is found at address”:Pointer
Exit
Else
Set Pointer = Pointer Next
[End If]
[End Loop]
Step 4: Print : “Element not found in linked list”
Step 5 :Exit
13
Memory Allocation/Deallocation

Before we move on to insertion and deletion in a linked list


part let’s discuss about memory allocation and deallocation.

• To insert an element into the linked list , First we need is


to get a free node.

• In case of deletion of a node, it is desired to return to


memory taken by deleted node for its reusability in future.

14
Insertion In Linked List

• First we get a free node from the free storage list

• Then element to be inserted is placed into the info part of the


node and pointers are set to add the new node at desired location
of list.

15
Insertion In Linked List (Continued)
Where we can insert element in linked list?

• At the beginning of linked list

• At end

• At a particular position in list

• In the sorted linked list

16
Insertion At Beginning

Begin 12 Null

Begin 401 88 414 Null

400

17
Algorithm : Insertion At Beginning
Step 1: If Free = Null Then
Print : “Overflow: No free available for insertion”
Exit
[End if]
Step 2: Allocate Space to node New
(set New = Free And Free = Free Next)
Step 3: Set New Info = Data
Step 4: Set New Next = Begin And Begin = New
Step 5: Exit

18
Insertion At End
• If list is empty, store null value in next part of new node and insert
item in the info part

• If list is not empty, traverse list till end node.

• Store address of new node into next part of the last node of the
linked list and the next part set to null.
Pointer

Begin 401 402 414 Null

New 405 Null


19
Algorithm : Insertion At End
Step 1: If Free = Null Then
Print :”Overflow: No free space available for insertion”
Exit
[End If]
Step 2: Allocate space to node New
Set New = Free And Free = Free Next
Step 3: Set New Info = Data , New Next = Null
Step 4: If Begin = Null Then
Begin = New
Exit
[End If]
Step 5: Set Pointer = Begin
Step 6: Repeat While Pointer Next != Null
Set Pointer = Pointer Next
[End Loop]
Step 7: Set Pointer Next = New
Step 8: Exit 20
Insertion At A Particular Position

• Locate the position of the node after which we want to insert


the new node.

• 2 cases are there if location found and if not found

• Traverse till we not reach on desired loc.

• If we reach on desired loc. Then loc. Found insert element if


we reach on end but not find a loc. Yet then loc. Not found.

21
Insertion At Any Location

Begin 401 402 414 Null

Item
Pointer

New Next=Pointer Next


Pointer Next=New

22
Algorithm : Insertion At Any Location

Step 1: If Free = Null Then


Print : “Overflow: No free space available for insertion”
Exit.
[End If ]
Step 2: Set Pointer = Begin
Step 3: Repeat While Pointer!=Null And Pointer Info!=Data
Set Pointer = Pointer Next
[End Loop]
Step 4: If Pointer = Null Then
Print: “The node containing element Data is not
present, so insertion is not possible.”
23
Else
Allocate space to node New
Set New=Free, Free=Free Next, New Info=Item
Set New Next=Pointer Next
Set Pointer Next=New
[End If]
Step 5: Exit

24
Insertion In Sorted Linked List

• Find the position of the node after which new node has to be
inserted

• List can be sorted in ascending order and descending order

• In ascending order first we compare the element with the


first element if inserted element is small then it will inserted
at first position else comparing goes on in desc. Order it is
opposite.

25
Insertion In A Sorted Linked List

Begin 401 405 408 Null

Pointer

403

New
26
Algorithm : Insertion At Any Location In sorted Link List
Step 1: If Begin = Null Then
Allocate Space to node New
Set New = Free and Free = Free Next
Set New Info = Item
Set New Next = Begin and Begin = New
[End If]
Step 2: If Item < Begin Info Then
Allocate Space to node New
Set New = Free And Free = Free Next
Set New Info = Item
Set New Next = Begin and Begin = New
Exit
[End If]
Step 3: Set Pointer = Begin and Pointer2 = Begin Next
27
Step 4: Repeat While Pointer2 != Null and Item > pointer2 Info
Set Pointer1 = Pointer2 and Pointer2 = Pointer2 Next
[End loop]
Step 5: If Free = Null Then
Print : “No space for insertion , Allocation of space to node
New is not possible”
Exit
[End If]
Step 6: Allocate space to node New
Set New = Free and Free = Free Next
Step 7: Set New Info = Item
Step 8: If Pointer2 = Null Then
Set Pointer1 Next = New and New Next = Null
Else
Set New Next = Pointer Next
Set Pointer1 Next = New
[End If]
Step 9: Exit 28
Deletion From Linked List

Deletion can be done in 3 ways:

• Deleting a node at the begin of link list

• Deleting a node at end.

• Del. A particular node in the linked list.

29
Deleting A Node At Begin.
• Deletion of a node at the begin of the list is a very simple operation
which can be done by changing the list pointer variable begin.

• Now begin will point to next node in the list.

• The space occupied by the deleted node is returned to the free storage
list.

Begin 401 402 414 Null

Free Null

DELETION OF NODE FROM BEGIN OF LIST


30
Algorithm : Deletion At Beginning of the linked list.
Step 1: If Begin = Null then
Print:”linked list is already empty”
Exit
[End if]
Step 2: set Item = Begin Info and Pos = Begin
Step 3: Begin = Begin Next
Step 4:Pos Next = Free and Free = Pos
Step 5:Exit

31
Deleting A Node At End
• For deleting the lost node from the given plinked list, it is
necessary to traverse the entire linked list for finding the
address of the preceding node of the last node i.e, address
of second last node.

• After finding the address of the second last node we will


store the address stored in the next part of the last node
into the next part of the second last node i.e null will be
stored in the next part of the 2nd last node.

32
Deleting A Node At End

Begin 401 402 NULL 414 Null

Pointer1 Pointer2

Free Null

Pointer1->Next=Pointer2->Next
Pointer1 = Begin Pointer1 = Pointer2 Pointer2->Next=Free
Pointer2 = Begin->Next Pointer2 = Pointer2 -> Next Free=Pointer2
33
Algorithm : Deletion At End

Step 1:If Begin = Null Then


Print : “Linked List Empty”
Exit
[End If]
Step 2: If Begin Next = Null Then
Set Data = Begin info
Deallocate memory held by Begin
c
(Begin Next = Free and Free = Begin)
Set Begin = Null
Exit
[End If]
Step 3: Set Pointer1 = Begin and Pointer2 = Begin Next
Step 4: Repeat While Pointer2 Next!= Null
Set Pointer1 = Pointer2 and Pointer2 = Pointer2 Next
[End loop] 34
Step 5: Set Pointer1 Next = Pointer2 Next
Step 6: Set Data = Pointer2 Info
Step 7: Deallocate memory held by Pointer2
(Pointer2 Next = Free and Free = Pointer2)
Step 8:Exit

35
Delete A Particular Node From Link List

• For deleting a particular node from the linked list, the first
task is to find the address of the preceding node of nth
node to be deleted.

• To complete the task traverse the linked list from begin and
compare the info. Stored in node with item.

• Two pointers pointer1 pointer2 will be used while


traversing the list for locating the address of the node to be
deleted and address of it’s preceding node.

36
Deleting A Particular Node In Link List

Begin

4
25 17 8 Null

Pointer1 Pointer2

Free

Null

Pointer1 ->Next=Pointer2->Next
Pointer2->Next=Free
Free=Pointer2

37
Algorithm: Deletion At Any Location
Step 1 :If Begin = Null Then
Print : “Linked List is Empty”
Exit
[End If]
Step 2: If Begin Info = Item Then
Set Pos = Begin
Set Begin = Begin Next
Pos Next = Free and Free = Pos
Exit
[End If]
Step 3: Set Pointer1 = Begin and Pointer2 = Begin Next
Step 4: Repeat While Pointer2! = Null and Pointer2 Info!= Item
SET Pointer1 = Pointer2 and Pointer2 Next
[End loop]

38
Step 5: If Pointer2 = Null Then
Print :”Node containing element item not found”
Exit

Else
Set Pointer1 Next = Pointer2 Next
[End If]
Step 6: Deallocate memory held by Pointer2
(Set Pointer2 Next = Free and Free = Pointer2)
Step 7: Exit

39
Copy A Link List Into Other Link List
• Consider the linked list with its start pointer as begin1.For
copying this given linked list into another list, use a new
pointer variable begin2 for the list in which source list will be
copied.

• Initially we will store null in the list variable begin2.

• Now we will traverse the entire source list from begin to the
end by copying the contents to the new target.

40
Copy A Link List Into Other Link List

Begin1 25 17 8 38 Null

Pointer

Begin2 25 17 8 38 Null

A Link List Is Copied


41
Algorithm: Copying One Link List Into Another Link List

Step 1: If Begin1=Null Then


Print: “Source List is Empty”
Exit
[End If]
Step 2: Set Begin2=Null
Step 3: If Free=Null Then
Print: “Free space not available”
Exit
Else
Allocate memory to the node New
Set New=Free And Free=Free Next
[End If]
Step 4: Set New Info=Begin1 Info And New Next=Null
Step 5: Set Begin2=New
42
Step 6: Set Pointer1=Begin1 Next And Pointer2=Begin2
Step 7: Repeat While Pointer1!=Null And Free!=Null
a. Allocate memory to node New
(New=Free And Free=Free Next)
b. Set New Info=Pointer1 Info And New Next=Null
c. Set Pointer2 Next=New
d. Set Pointer1=Pointer1 Next And Pointer2=New
[End Loop]
Step 8: If Pointer1==Null Then
Print: “List copied successfully”
Else
Print: “Not enough space to perform copy operation”
[End If]
Step 9: Exit

43
Merging Two Linked List
• There are number of applications where there is need to merge
two or more linked lists into a single linked list.

• Merging operation refers to putting the elements of two or more


lists into one list.

• The list can be sorted or unsorted.

Begin1 25 27 42 Null

Begin2 10 17 30 Null

44
After Merging

Begin1 25 27 42 Null

Pointer1

Begin2 10 17 30 Null

Pointer2

Begin
Merged Complete List

10 17 25 27 30 42 Null

45
Algorithm : Merging Two Sorted Linked List
Step 1: If Begin1=Null or Begin2=Null then
Print “one of the given linked list is empty”
Exit
[end if]
Step 2: If Free =Null then
Print: “no free space available”
Exit
Else
//Allocate memory to node New
Set New =Free and Free=Free Next
[End If]
Step 3: Set Begin=Null
Step 4: If Begin1 Info > =Begin2 Info then
Set New Info=Begin2 Info and New Next=Null
Set Pointer1=Begin1 and Pointer2=Begin2 Next
46
Else
Set New Info=Begin1 Info and New Next=Null
Set Pointer1=Begin1 Next and Pointer2=Begin2
[End If]
Step 5: Set Begin=New and Pointer =New
Step 6: Repeat steps 7and 8 while Pointer1!=Null and Pointer2!=Null
Step 7: If Free=Null then
Print “No free space available”
Exit
Else
Set New =Free and Free=Free Next
[End If]
Step 8: If Pointer1 Info >=Pointer2 Info then
Set New Info=Pointer Info
Set New Next=Null
Set Pointer Next=New
Set Pointer=New and Pointer2=Pointer2 Next 47
[End If]
[End Loop]
Step 9: If Pointer1=Null and Free!=Null then
Repeat while Pointer2!=Null
a. Set New=Free and Free=Free Next
b. Set New Info=Pointer2 Info and
New Next =Null
c. Set Pointer Next=New
d. Set Pointer =New and Pointer2=Pointer2 Next
[End Loop]
Else
Repeat while Pointer1!=Null
a. Set New=Free and Free=Free Next
b. Set New Info=Pointer1 Info and
New Next=Null
c.Set Pointer Next=New
d. Set Pointer=New and Pointer1=Pointer1 Next48
[End Loop]
[End If]
Step 10: If Pointer1 = Null And Pointer2=Null Then
Print: “The given link lists merged successfully”
Else
Print “Not Enough space”
[End If]
Step 11: Exit

49
Splitting Two Lists

• Suppose we have a linked list which we want to split into


lists.

• First we check total no. Of nodes then (N/2)th and (N/2+1)th


Node.

• After finding these addresses we will store null in the next


part of the (n/2)th node and address of (n/2+1)th node will be
stored in the new list pointer variable begin2.

• Now our list divide into 2 parts n/2 and n-n/2 with list
begin1 and begin2.

50
Splitted List1 And List2 .

Begin

10 17 25 27 28 32 Null

Pointer

Begin1

10 17 25 Null

Begin2

27 28 30 Null

51
Algorithm: Split A Link List Into Two Link Lists.

Step 1: If Begin=Null
Print: “Splitting cannot be performed on empty list”
Exit
[End If]
Step 2: Set pointer= Begin And Count=0
Step 3: Repeat Steps 4 and 5 While Pointer!=Null
Step 4: Set Count=Count 1
Step 5: Set Pointer=pointer Next
[End Loop]
Step 6: Set Mid=Integer(count/2)
Step 7: Set Begin2=Null And Pointer=Begin And i =1
Step 8: Repeat Step 9 While i<Mid

52
Step 9: Set Pointer=Pointer Next
Set i=i 1
[End Loop]
Step 10: Set Begin2 = Pointer Next And
Pointer Next = Null
Step 11: Exit

53
Reversing A One Way Linked List
• To reverse a linked list, we need to use three pointers
variables.

• One pointer variable is used to store the address of current


node.

• Second pointer variable will be used to store the address of


next node.

• The third pointer variable will be used to store the address of


next to next of current node.

54
Reversing A One Way Linked List

Begin1

5 10 Null

Begin2

5 Null 10

55
Reverse Link List With More Than Two Nodes

Begin

10 17 25 27 28 42 Null

Begin

10 Null 17 25 27 28 42

56
Algorithm: Reverse The One Way Link List

Step 1: If Begin = Null Then


Print: “No node is present in link list”
Exit
[End If]
Step 2: If Begin Next = Null Then
Print: “link list is having only one node”
Exit
[End If]
Step 3: If Begin Next != Null Then
Set Pointer1 = Begin
Set Pointer2 = Begin Next
Set Pointer3 = Pointer2 Next
[End If]
57
Step 4: If Pointer3 = Null Then
Set Pointer2 Next = Pointer1
Set Pointer1 Next = Null
Set Begin = Pointer2
Exit
[End If]
Step 5: Set Pointer1 Next=Null
Step 6: Repeat steps 7 to 10 while Pointer3 Next!=Null
Step 7: Set Pointer2 → Next=Pointer1
Step 8: Set Pointer1=Pointer2
Step 9: Set Pointer2=Pointer3
Step 10: Set Pointer3=Pointer3 Next
[End Loop]
Step 11: Set Pointer2 Next=Pointer1
Step 12: Set Pointer3 Next=Pointer2
Step 13: Set Begin=Pointer3
Step 14: Exit 58

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy