Unit I
Unit I
BATCH : 2017-2021
YEAR/SEM : II/III
UNIT-I-NOTES
LINEAR DATA STRUCTURES-LIST
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Data:
A collection of facts, concepts, figures, observations, occurrences or instructions in a
formalized manner.
Information:
The meaning that is currently assigned to data by means of the conventions applied to
those data(i.e. processed data)
Record:
Collection of related fields.
Data type:
Set of elements that share common set of properties used to solve a program.
Data Structures:
Data Structure is the way of organizing, storing, and retrieving data and their relationship
with each other.
Characteristics of data structures:
1. It depicts the logical representation of data in computer memory.
1.Traversal
2.Search
3.Insertion
4.Deletion
CS8391 1 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
DATA STRUCTURES
Static Ds:
If a ds is created using static memory allocation, ie. ds formed when the number of data items are
known in advance ,it is known as static data static ds or fixed size ds.
CS8391 2 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Dynamic Ds:
If the ds is created using dynamic memory allocation i.e ds formed when the number of data
items are not known in advance is known as dynamic ds or variable size ds.
Compiler design
Operating system
Statistical analysis package
DBMS
Numerical analysis
Simulation
Artificial intelligence
Graphics
An abstract Data type (ADT) is defined as a mathematical model with a collection of operations
defined on that model. Set of integers, together with the operations of union, intersection and set
difference form a example of an ADT. An ADT consists of data together with functions that
operate on that data.
Advantages/Benefits of ADT:
1.Modularity
2.Reuse
3.code is easier to understand
4.Implementation of ADTs can be changed without requiring changes to the program that uses
the ADTs.
If the element at position i is Ai, then its successor is Ai+1 and its predecessor is Ai-1
CS8391 3 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Insertion and Deletion operation are expensive as it requires more data movements
CS8391 4 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Declaration of Array:
#define maxsize 10
int list[maxsize], n ;
Create Operation:
Create operation is used to create the list with „ n „ number of elements .If „ n „ exceeds the
array‟s maxsize, then elements cannot be inserted into the list. Otherwise the array elements are
stored in the consecutive array locations (i.e.) list [0], list [1] and so on.
void Create ( )
{
int i;
printf("\nEnter the number of elements to be added in the list:\
t"); scanf("%d",&n);
printf("\nEnter the array elements:\
t"); for(i=0;i<n;i++)
scanf("%d",&list[i]);
}
Insert Operation:
Insert operation is used to insert an element at particular position in the existing list. Inserting the
element in the last position of an array is easy. But inserting the element at a particular position
in an array is quite difficult since it involves all the subsequent elements to be shifted one
position to the right.
CS8391 5 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
10 20 30 40 50
nd
If data 15 is to be inserted in the 2 position then 50 has to be moved to next index position, 40
has to be moved to 50 position, 30 has to be moved to 40 position and 20 has to be moved to 30
position.
10 20 30 40 50
10 20 30 40 50
nd
After this four data movement, 15 is inserted in the 2 position of the array.
CS8391 6 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
10 15 20 30 40 50
Deletion Operation:
Deletion is the process of removing an element from the array at any position.
Deleting an element from the end is easy. If an element is to be deleted from any particular
position ,it requires all subsequent element from that position is shifted one position towards left.
10 20 30 40 50
If data 20 is to be deleted from the array, then 30 has to be moved to data 20 position, 40 has to
be moved to data 30 position and 50 has to be moved to data 40 position.
10 20 30 40 50
CS8391 7 DS UNIT-
I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
nd
After this 3 data movements, data 20 is deleted from the 2 position of the array.
10 30 40 50
Search Operation:
Search( ) operation is used to determine whether a particular element is present in the list or not.
Input the search element to be checked in the list.
Routine to search an element in the array:
void Search( )
{
int search,i,count = 0;
printf("\nEnter the element to be searched:\
t"); scanf("%d",&search);
for(i=0;i<n;i++)
{
if(search == list[i])
count++;
}
CS8391 8 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
if(count==0)
printf("\nElement not present in the list");
else
printf("\nElement present in the list");
}
CS8391 9 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
default: printf("\nEnter option between 1 - 6\n");
break;
}
}while(choice<7);
}
void Create()
{
int i;
printf("\nEnter the number of elements to be added in the list:\
t"); scanf("%d",&n);
printf("\nEnter the array elements:\
t"); for(i=0;i<n;i++)
scanf("%d",&list[i]);
Display();
}
void Insert()
{
int i,data,pos;
printf("\nEnter the data to be inserted:\
t"); scanf("%d",&data);
printf("\nEnter the position at which element to be inserted:\
t"); scanf("%d",&pos);
for(i = n-1 ; i >= pos-1 ; i--)
list[i+1] = list[i];
list[pos-1] =
data; n+=1;
Display();
}
void Delete( )
{
int i,pos;
printf("\nEnter the position of the data to be deleted:\
t"); scanf("%d",&pos);
printf("\nThe data deleted is:\t %d", list[pos-1]);
for(i=pos-1;i<n-1;i++)
list[i]=list[i+1];
n=n-1;
Display();
}
void Display()
{
int i;
printf("\n**********Elements in the array**********\n");
for(i=0;i<n;i++)
printf("%d\t",list[i]);
}
CS8391 10 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
void Search()
{
int search,i,count = 0;
printf("\nEnter the element to be searched:\
t"); scanf("%d",&search);
for(i=0;i<n;i++)
{
if(search == list[i])
{
count++;
}
}
if(count==0)
printf("\nElement not present in the list");
else
printf("\nElement present in the list");
}
Output
1.create
2.Insert
3.Delete
4.Display
5.Search
6.Exit
Enter your choice: 1
1 2 3 4 5
1.create
2.Insert
3.Delete
4.Display
5.Search
6.Exit
CS8391 11 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Enter your choice: 2
3 1 2 3 4 5
1.create
2.Insert
3.Delete
4.Display
5.Search
6.Exit
3 1 2 4 5
1.create
2.Insert
3.Delete
4.Display
5.Search
6.Exit
1.create
2.Insert
3.Delete
4.Display
5.Search
6.Exit
Enter your choice:6
Linked Lists:
A Linked list is an ordered collection of elements. Each element in the list is referred as a node.
Each node contains two fields namely,
Data field-The data field contains the actual data of the elements to be stored in the list
Next field- The next field contains the address of the next node in the list
DATA NEXT
CS8391 14 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
To use dynamic memory allocation functions, you must include the header file stdlib.h.
malloc()
The malloc function reserves a block of memory of specified size and returns a pointer of
type void. This means that we can assign it to any type of pointer.
The general syntax of malloc() is
ptr =(cast-type*)malloc(byte-size);
where ptr is a pointer of type cast-type. malloc() returns a pointer (of cast type) to an area of
memory with size byte-size.
calloc():
calloc() function is another function that reserves memory at the run time. It is normally used to
request multiple blocks of storage each of the same size and then sets all bytes to zero. calloc()
stands for contiguous memory allocation and is primarily used to allocate memory for arrays.
The syntax of calloc() can be given as:
ptr=(cast-type*) calloc(n,elem-size);
The above statement allocates contiguous space for n blocks each of size elem-size bytes. The
only difference between malloc() and calloc() is that when we use calloc(), all bytes are
initialized to zero. calloc() returns a pointer to the first byte of the allocated region.
free():
The free() is used to release the block of memory.
Syntax:
The general syntax of the free()function is,
free(ptr);
where ptr is a pointer that has been created by using malloc() or calloc(). When memory is
deallocated using free(), it is returned back to the free list within the heap.
realloc():
At times the memory allocated by using calloc() or malloc() might be insufficient or in excess. In
both the situations we can always use realloc() to change the memory size already allocated by
calloc() and malloc(). This process is called reallocation of memory. The general syntax for
realloc() can be given as,
ptr = realloc(ptr,newsize);
The function realloc() allocates new memory space of size specified by newsize to the pointer
CS8391 15 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
variable ptr. It returns a pointer to the first byte of the memory block. The allocated new block
may be or may not be at the same region. Thus, we see that realloc() takes two arguments. The
first is the pointer referencing the memory and the second is the total number of bytes you want
to reallocate.
A singly linked list is a linked list in which each node contains only one link field pointing to the
next node in the list
SLL
CS8391 16 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
CS8391 17 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
p->next=newnode;
p=newnode;
}
}
Initially the list is empty
List L
Null
L
Insert(10,List L)- A new node with data 10 is inserted and the next field is updated to
NULL. The next field of previous node is updated to store the address of new node.
Insert(20,L) - A new node with data 20 is inserted and the next field is updated to NULL.
The next field of previous node is updated to store the address of new node.
10 20 Null
L P
Insert(30,L) - A new node with data 30 is inserted and the next field is updated to NULL. The
next field of previous node is updated to store the address of new node.
10 20 30 Null
L P
CS8391 18 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Insert(25,L, P) - A new node with data 25 is inserted after the position P and the next field is
updated to NULL. The next field of previous node is updated to store the address of new node.
CS8391 19 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
CS8391 20 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Find(List L, 20) - To find an element X traverse from the first node of the list and move to the
next with the help of the address stored in the next field until data is equal to X or till the end
of the list
10 40 20 30 Null
L
X P
CS8391 21 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Find Previous
It returns the position of its predecessor.
position FindPrevious (int X, List L)
{
position p;
p = L;
while( p -> next ! = NULL && p -> next -> data! =
X ) p = p -> next;
return P;
}
void Delete_list(List L)
{
position P,temp;
P=L->next; L-
>next=NULL;
while(P!=NULL)
{
temp=P-
>next; free(P);
P=temp;
}
}
int data;
position next;
1
};
void main()
{
int choice; Enter the number of
clrscr(); nodes to be inserted
do
5
{
printf("1.create\n2.display\n3.insert\n4.find\n5.delete\n\n\n"); Enter the data
printf("Enter your choice\n\n");
scanf("%d",&choice); 12345
switch(choice)
{
case 1:
create();
break;
case 2:
display(); 1.create
break;
2.display
case 3:
insert(); 3.insert
break;
4.find
case 4:
find(); 5.delete
break;
case 5: Enter your choice
delete(); 2
break;
case 6: 1 -> 2 -> 3 -> 4 -> 5 ->
exit(0); Null
}
1.create
}
while(choice<7); 2.display
getch();
3.insert
}
void create() 4.find
{
5.delete
int i,n;
L=NULL;
newnode=(struct node*)malloc(sizeof(struct node));
printf("\n Enter the number of nodes to be inserted\
n"); scanf("%d",&n); Enter your choice
printf("\n Enter the data\n");
scanf("%d",&newnode->data);
newnode->next=NULL; 3
CS8391 25 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
L=newnode;
p=L;
Enter ur choice
for(i=2;i<=n;i++)
{
newnode=(struct node *)malloc(sizeof(struct node)); 1.first
scanf("%d",&newnode->data); newnode-
>next=NULL; 2.middle
p->next=newnode; 3.end
p=newnode;
} 1
}
void display()
{ Enter the data to be
p=L;
inserted
while(p!=NULL)
{ 7 7 -> 1 -> 2 -> 3 -> 4 -> 5
printf("%d -> ",p- -
>data); p=p->next;
} > Null
printf("Null\n");
} 1.create
void insert() 2.display
{
int ch; 3.insert
printf("\nEnter ur choice\n"); 4.find
printf("\n1.first\n2.middle\n3.end\n");
5.delete
scanf("%d",&ch);
switch(ch)
{
case 2:
{ Enter your choice
int pos,i=1;
p=L;
newnode=(struct node*)malloc(sizeof(struct node));
printf("\nEnter the data to be inserted\n");
scanf("%d",&newnode->data); printf("\
nEnter the position to be inserted\n");
scanf("%d",&pos);
newnode->next=NULL;
while(i<pos-1)
{
p=p->next;
i++;
}
newnode->next=p->next;
p->next=newnode;
CS8391 26 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
p=newnode;
display();
break;
}
case 1:
{
p=L;
newnode=(struct node*)malloc(sizeof(struct node));
printf("\nEnter the data to be inserted\n");
scanf("%d",&newnode->data);
newnode->next=L;
L=newnode;
display();
break;
}
case 3:
{
p=L;
newnode=(struct node*)malloc(sizeof(struct node));
printf("\nEnter the data to be inserted\n");
scanf("%d",&newnode->data);
while(p->next!=NULL) p=p-
>next; newnode-
>next=NULL; p-
>next=newnode; p=newnode;
display();
break;
}
}
}
void find()
{
int search,count=0;
printf("\n Enter the element to be found:\
n"); scanf("%d",&search);
p=L;
while(p!=NULL)
{
if(p->data==search)
{
count++;
break;
}
p=p->next;
}
CS8391 27 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
if(count==0)
printf("\n Element Not present\
n"); else
printf("\n Element present in the list \n\n");
}
void delete()
{
position p,temp;
int x;
p=L;
if(p==NULL)
{
printf("empty list\n");
}
else
{
printf("\nEnter the data to be deleted\
n"); scanf("%d",&x);
if(x==p->data)
{
temp=p;
L=p->next;
free(temp);
display();
}
else
{
while(p->next!=NULL && p->next->data!=x)
{
p=p->next;
}
temp=p->next; p-
>next=p->next->next;
free(temp);
display();
}
}
}
Advantages of SLL
1.The elements can be accessed using the next link
2.Occupies less memory than DLL as it has only one next field.
Disadvantages of SLL
1.Traversal in the backwards is not possible
2.Less efficient to for insertion and deletion.
CS8391 28 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Doubly-Linked List
A doubly linked list is a linked list in which each node has three fields namely Data, Next, Prev.
DLL NODE
CS8391 29 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Initially the list is empty. Then assign the first node as head.
newnode->data=X;
newnode->next=NULL;
newnode->prev=NULL;
L=newnode;
If we add one more node in the list,then create a newnode and attach that node to the end of the
list.
L->next=newnode;
newnode->prev=L;
if(pos==1)
P=L;
Newnode->data= X;
L->next ->prev=Newnode
L->next = Newnode;
Newnode ->prev = L;
CS8391 30 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Newnode->data= X;
P->next ->prev=Newnode
P ->next = Newnode;
Newnode ->prev = P:
CS8391 31 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
CS8391 32 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
void find()
{
int a,flag=0,count=0;
if(L==NULL)
printf(“\nThe list is
empty”); else
{
printf(“\nEnter the elements to be searched”);
scanf(“%d”,&a); for(P=L;P!=NULL;P=P-
>next)
{
count++; if(P-
>data==a)
{
flag=1;
printf(“\nThe element is found”);
printf(“\nThe position is %d”,count);
CS8391 33 DS UNIT-
I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
break;
}
}
if(flag==0)
printf(“\nThe element is not found”);
}
}
break;
case 4: 1.INSERT
find();
break; 2.DELETE
case 5:
3.DISPLAY
exit(1);
} 4.FIND
}while(choice!=5);
5.EXIT
getch();
} Enter ur option1
void insert()
{
int pos,I; Enter the data to be
newnode=(struct node*)malloc(sizeof(struct node)); inserted 30
printf(“\nEnter the data to be inserted”);
scanf(“%d”,&newnode->data);
if(L==NULL)
{ Enter the position where
L=newnode; L- the data is to be inserted3
>next=NULL; L-
>prev=NULL;
} 1.INSERT
else
{ 2.DELETE
printf(“\nEnter the position where the data is to be inserted”); 3.DISPLAY
scanf(“%d”,&pos);
if(pos==1) 4.FIND
{ 5.EXIT
newnode->next=L;
Enter ur option 3
newnode->prev=NULL;
L->prev=newnode;
L=newnode;
} The elements in the list are
else
{
P=L; for(i=1;i<pos-1&&P->next! 10 20 30
=NULL;i++) 1.INSERT
{
P=P->next; 2.DELETE
} 3.DISPLAY
newnode->next=P->next;
4.FIND
P->next=newnode;
newnode->prev=P; P- 5.EXIT
>next->prev=newnode;
Enter ur option 2
}
}
CS8391 35 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
if(L==NULL)
printf(“\nThe list is Enter the elements to be
empty”); else
{ searched 30
printf(“\nEnter the elements to be searched”);
scanf(“%d”,&a); for(P=L;P!=NULL;P=P-
>next) The element is found
{
The position is 2
count++; if(P-
>data==a) 1.INSERT
{
2.DELETE
flag=1;
printf(“\nThe element is found”); 3.DISPLAY
printf(“\nThe position is %d”,count);
break; 4.FIND
} 5.EXIT
}
if(flag==0) Enter ur option5
printf(“\nThe element is not found”); Press any key to continue .
}
} ..
Advantages of DLL:
The DLL has two pointer fields. One field is prev link field and another is next link field.
Because of these two pointer fields we can access any node efficiently whereas in SLL only
one link field is there which stores next node which makes accessing of any node difficult.
Disadvantages of DLL:
The DLL has two pointer fields. One field is prev link field and another is next link field.
Because of these two pointer fields, more memory space is used by DLL compared to SLL
Circular Linked list is a linked list in which the pointer of the last node points to the first node.
CS8391 37 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Types of CLL:
CLL can be implemented as circular singly linked list and circular doubly linked list.
A Singly linked circular list is a linked list in which the last node of the list points to the first
node.
Declaration of node:
struct node
int data;
position next;
};
CS8391 38 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Routine to insert an element in the middle
CS8391 40 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Routine to delete an element from the beginning
void del_first(List L)
{
position temp;
temp=L->next; L-
>next=temp->next;
free(temp);
}
CS8391 41 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Routine to delete an element from the middle
void del_last(List L)
{
position p, temp;
p=L;
while(p->next->next!
=L) p=p->next; temp=p-
>next; p->next=L
free(temp);}
CS8391 43 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
A doubly linked circular list is a doubly linked list in which the next link of the last node
points to the first node and prev link of the first node points to the last node of the list.
CS8391 44 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Declaration of node:
CS8391 47 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
void del_first(List L)
{
position temp; if(L-
>next!=NULL)
{
temp=L->next; L-
>next=temp->next;
temp->next->prev=L;
free(temp);
}
CS8391 48 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
CS8391 49 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
void del_last(List L)
{
position p, temp;
p=L; while(p-
>next!=L) p=p-
>next; temp=p; p-
>next->prev=L;
L->prev=p->prev;
free(temp);
CS8391 50 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
Applications of List:
1.Polynomial ADT
2.Radix sort
3.Multilist
Polynomial Manipulation
Polynomial manipulations such as addition, subtraction & differentiation etc.. can be
performed using linked list
CS8391 51 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
CS8391 52 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
CS8391 53 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
newnode->coeff=(ptr1-coeff)-(ptr2->coeff);
newnode->power=ptr1->power;
newnode->next=NULL;
list3=create(list3,newnode);
ptr1=ptr1->next;
ptr2=ptr2->next;
}
else
{
if(ptr1-power>ptr2-power)
{
newnode->coeff=ptr1->coeff;
newnode->power=ptr1->power;
newnode->next=NULL;
list3=create(list3,newnode);
ptr1=ptr1->next;
}
else
{
newnode->coeff=-(ptr2->coeff);
newnode->power=ptr2->power;
newnode->next=NULL;
list3=create(list3,newnode);
ptr2=ptr2->next;
}
}
}
Polynomial Differentiation:
void diff()
newnode->coeff=(ptr1-coeff)*(ptr1->power);
newnode->power=ptr1->power-1;
CS8391 54 DS UNIT- I
PANIMALAR INSTITUTE OF TECHNOLOGY II YEAR/III SEM B.E-CSE
newnode->next=NULL;
list3=create(list3,newnode);
ptr1=ptr1->next;
}
}
Polynomial Multiplication
void mul()
{
poly *ptr1, *ptr2, *newnode ;
ptr1= list1;
ptr2 = list2;
while( ptr1 != NULL && ptr2 != NULL )
{
newnode = (struct poly*)malloc( sizeof ( struct poly ));
if( ptr1 -> power = = ptr2 -> power )
{
newnode -> coeff = ptr1 -> coeff * ptr2 -> coeff;
newnode -> power = ptr1 -> power+ptr2->power; ;
newnode -> next = NULL;
list3 = create( list3,
newnode ); ptr1 = ptr1 -> next;
ptr2 = ptr2 -> next;
}}
}
CS8391 55 DS UNIT- I