A polynomial may be represented as a linked list where each
Solution
//EXAMPLE PROGRAM FOR SINGLE LINKED LIST
# include <stdio.h>
# include <conio.h>
# include <alloc.h>
# include <stdlib.h>
struct list
{
int number;
struct list *next;
};
typedef struct list node;
node *first,*prev,*temp,*curr;
void create(void)
{
printf(\"\ Stop by -999\");
temp=(node *)(malloc(sizeof(node)));
printf(\"\ Enter the numbers \");
scanf(\"%d\",&temp->number);
while(temp->number!=-999)
{
temp->next=NULL;
if(first==NULL)
{
first=temp;
prev=first;
}
else
{
prev->next=temp;
prev=temp;
}
temp=(node *)(malloc(sizeof(node)));
scanf(\"%d\",&temp->number);
} //end of while
}
void delete1(void)
{
int num;
printf(\"\ Enter the number to delete \");
scanf(\"%d\",&num);
if(first->number==num)
{
first=first->next;
return;
}
else
{
prev=first;
curr=first->next;
while(curr->next!=NULL)
{
if(curr->number==num)
{
prev->next=curr->next;
return;
}
prev=curr;
curr=curr->next;
}
}
if(curr->number==num)
{
prev->next=NULL;
return;
}
printf(\"\ No such number\");
}
void insertbefore(void)
{
int nu;
temp=(node *)(malloc(sizeof(node)));
printf(\"\ Enter the number \");
scanf(\"%d\",&temp->number);
printf(\"\ Insert before which number \");
scanf(\"%d\",&nu);
temp->next=NULL;
prev=first;
curr=first;
if(first==NULL) //if the list is empty then we can insert in this way
{
first=temp;
return;
}
if(curr->number==nu)
{
temp->next=first;
first=temp;
return;
}
else
{
prev=curr;
curr=curr->next;
while(curr->next!=NULL)
{
if(curr->number==nu)
{
prev->next=temp;
temp->next=curr;
return;
}
prev=curr;
curr=curr->next;
}
}
if(curr->number==nu)
{
prev->next=temp;
temp->next=curr;
return;
}
printf(\"\ No such number \");
}
void insertafter(void)
{
int nu;
temp=(node *)(malloc(sizeof(node)));
printf(\"\ Enter the number \");
scanf(\"%d\",&temp->number);
printf(\"\ Insert after which number \");
scanf(\"%d\",&nu);
temp->next=NULL;
prev=first;
curr=first;
if(first==NULL) //if the list is empty then we can insert in this way
{
first=temp;
return;
}
if(curr->number==nu)
{
temp->next=curr->next;
curr->next=temp;
return;
}
else
{
prev=curr;
curr=curr->next;
while(curr->next!=NULL)
{
if(curr->number==nu)
{
temp->next=curr->next;
curr->next=temp;
return;
}
prev=curr;
curr=curr->next;
}
}
if(curr->number==nu)
{
curr->next=temp;
return;
}
printf(\"\ No such number \");
}
void print(void)
{
printf(\"\ The list is \ \");
printf(\" -----------\ \");
temp=first;
while(temp!=NULL)
{
printf(\"%d-->\",temp->number);
temp=temp->next;
}
printf(\"Nil\");
getch();
}
void main()
{
int ch=0;
first=NULL;
clrscr();
printf(\"\ Linked List creation \ \");
create();
clrscr();
while(ch!=5)
{
clrscr();
printf(\"\ 1.Insert Before\");
printf(\"\ 2.Insert After\");
printf(\"\ 3.Delete \");
printf(\"\ 4.Print \");
printf(\"\ 5.Exit \");
printf(\"\ Enter your choice \");
scanf(\"%d\",&ch);
switch(ch)
{
case 1:
insertbefore();
print();
break;
case 2:
insertafter();
print();
break;
case 3:
delete1();
print();
break;
case 4:
print();
break;
case 5:
print();
exit(1);
}
}
getch();
}



