Sunteți pe pagina 1din 4

#include <iostream>

using namespace std;


struct node
{
int mks;
node *next;
} ;
void input(node *&current,node *&previous ,node *&first);
void input(node *&current,node *&previous ,node *&first)
{
int b=1 ;
char ch,chk;
do
{
current=new node;
cout<<"Enter Marks#"<<":";
cin>>current->mks;
current->next=NULL;
if(b==1)
{
first=previous=current;
b=0;
}
else
{
previous->next=current;
previous=current;
} cout<<endl<<"Do you want to enter again...'y' or 'n'.."<<
endl;
cin>>chk;
cout<<endl;
if(chk=='n')
break;
else
continue;
}while(1);
}
void display(node*&,node*&,node*&);
void display(node *&current,node *&previous ,node *&first)
{
current=first;
cout<<"Numbers are: ";
while(current!=NULL)
{
cout<<current->mks<<" ";
current=current->next;
}
cout<<"\n";
}
void average(node*&,node*&,node*&);
void average(node *&current,node *&previous ,node *&first)
{
int count=0,sum=0;
double avg;
current=first;
while(current!=NULL)

{
sum=sum+current->mks;
current=current->next;
count++;
}
avg=(sum/(count+0.0));
cout<<"Average: "<<avg<<endl;
}
void insert(node*&,node*&,node*&,node*&);
void insert(node *&current,node *&previous ,node *&first,node*&newdata)
{
newdata=new node;
cout<<"Enter marks to insert:";
cin>>newdata->mks;
if(newdata->mks<=first->mks)
{
newdata->next=first;
first=newdata;
}
else
{
current=previous=first;
while(current->mks<=newdata->mks)// || current!
=NULL)
{
previous=current;
current=current->next;
if(current==NULL)
break;
}
previous->next=newdata;
newdata->next=current;
}
}
void sort(node*&,node*&,node*&);
void sort(node *&current,node *&previous ,node *&first)
{
current=first->next;
previous=first;
while(current!=NULL)
{
do
{
if(previous->mks>current->mks)
swap(previous->mks,current->mks);
current=current->next;
}while(current);
previous=previous->next;
current=previous->next;
}
}
void mydelete(node*&,node*&,node*&);
void mydelete(node *&current,node *&previous ,node *&first)
{
int del,pos=0;
cout<<"Enter marks you want to delete:";
cin>>del;

current=previous=first;
if(del==current->mks)
first=current->next;
else
{
current=current->next;
while(current!=NULL)
{
if(current->mks!=del)
{ previous=current;
current=current->next;}
else
{ previous->next=current->next;
pos=1;
break; }
}
if(pos==0)
cout<<"your input marks to delete not found"<<endl;
else
cout<<"data deleted"<<endl;
}
}

int main()
{
node *first=NULL,*current=NULL,*previous=NULL,*newdata=NULL;
int a,b=1,sum=0,count=0;
do
{

cout<<"\n";
cout<<"\t\t\tPress 1 to Enter marks"<<endl;
cout<<"\t\t\tPress 2 to Display marks"<<endl;
cout<<"\t\t\tPress 3 to Display average"<<endl;
cout<<"\t\t\tPress 4 to Insert a marks"<<endl;
cout<<"\t\t\tPress 5 to Sort marks"<<endl;
cout<<"\t\t\tPress 6 to Delete marks"<<endl;
cout<<"\t\t\tPress 0 to Exit"<<endl;
cout<<"\n";
cout<<"Enter Your Choice:";
cin>>a;
switch(a)
{
case 1:
input(current,previous,first);
break;
case 2:
display(current,previous,first);
break;
case 3:
average(current,previous,first);
break;
case 4:

insert(current,previous,first,newdata);
display(current,previous,first);
break;
case 5:
sort(current,previous,first);
display(current,previous,first);
break;
case 6:
mydelete(current,previous,first);
display(current,previous,first);
break;
case 0:
exit(-1);
default:
cout<<"Invalid input"<<endl;
}
}while(1);
system("pause");
return 0;
}

S-ar putea să vă placă și