Referred From :  PRITHVIRAJ JAIN



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node

    int sem;
    char name[20],usn[20],branch[10],phno[11];
    struct node *link;
}*start=NULL,*last=NULL,*new,*ptr,*cur;
void create()
{
    int sem;
    char name[20],usn[20],branch[10],phno[11];
    printf("ENTER STUDENT NAME , USN , BRANCH , SEM , PHONE NO.\n");
    scanf("%s%s%s%d%s",name,usn,branch,&sem,phno);
    new=(struct node *)malloc(sizeof(struct node));
    new->link=NULL;
    strcpy(new->name,name);
    strcpy(new->usn,usn);
    strcpy(new->branch,branch);
    strcpy(new->phno,phno);
    new->sem=sem;
}
void insertbeg()
{
    create();
    if(start==NULL)
    {
        start=new;
        last=new;
    }
    else
    {
        new->link=start;
        start=new;
    }
}
void insertend()
{
    create();
    if(start==NULL)
    {
        start=new;
        last=new;
    }
    else
    {
        last->link=new;
        last=new;
    }
}
void display()
{
    int count=0;
    if(start==NULL)
    printf("LIST IS EMPTY\n");
    else
    {
        ptr=start;
        printf("THE STUDENT DETAILS ARE :\n");
        printf("NAME\t\tUSN\t\tBRANCH\tSEM\t\tPHONE NO.\n");
        while(ptr!=NULL)
        {
            printf("%s\t\t%s\t%s\t%d\t\t%s\n",ptr->name,ptr->usn,ptr->branch,ptr->sem,ptr->phno);
            ptr=ptr->link;
            count++;
        }
        printf("THE NUMBER OF NODES PRESENT IS : %d\n",count);
    }
}
void deletebeg()
{
    if(start==NULL)
    printf("NOTHING TO DELETE\n");
    else if(start->link==NULL)
    {
        ptr=start;
        start=NULL;
    }
    else
    {
        ptr=start;
        start=start->link;
    }
    printf("THE DELETED STUDENT DETAILS ARE :\n");
    printf("NAME\t\tUSN\t\tBRANCH\tSEM\t\tPHONE NO.\n");
    printf("%s\t\t%s\t%s\t%d\t\t%s\n",ptr->name,ptr->usn,ptr->branch,ptr->sem,ptr->phno);
    free(ptr);
}
void deleteend()
{
    if(start==NULL)
    printf("NOTHING TO DELETE\n");
    else if(start->link==NULL)
    {
        ptr=start;
        start=NULL;
    }
    else
    {
        ptr=start;
        while(ptr->link!=last)
        ptr=ptr->link;
        last=ptr;
        ptr=ptr->link;
        last->link=NULL;
    }
    printf("THE DELETED STUDENT DETAILS ARE :\n");
    printf("NAME\t\tUSN\t\tBRANCH\tSEM\t\tPHONE NO.\n");
    printf("%s\t\t%s\t%s\t%d\t\t%s\n",ptr->name,ptr->usn,ptr->branch,ptr->sem,ptr->phno);
    free(ptr);
}
void deletesecond()
{
    if(start==NULL||start->link==NULL)
    printf("UNABLE TO DELETE\n");
    else
    {
        cur=start;
        ptr=start->link;
        printf("THE DELETED STUDENT DETAILS ARE :\n");
        printf("NAME\t\tUSN\t\tBRANCH\tSEM\t\tPHONE NO.\n");
        printf("%s\t\t%s\t%s\t%d\t\t%s\n",ptr->name,ptr->usn,ptr->branch,ptr->sem,ptr->phno);
        cur->link=ptr->link;
        free(ptr);
    }
}
void search()
{
    char usn[20];
    printf("ENTER USN :\n");
    scanf("%s",usn);
    if(start==NULL)
    {
        printf("SEARCH UNSUCCESSFUL\n");
        return;
    }
    ptr=start;
    while(ptr!=NULL)  
    {
        if(strcmp(ptr->usn,usn)==0)
        {
            printf("THE STUDENT DETAILS IS :\n");
            printf("NAME\t\tUSN\t\tBRANCH\tSEM\t\tPHONE NO.\n");
            printf("%s\t\t%s\t%s\t%d\t\t%s\n",ptr->name,ptr->usn,ptr->branch,ptr->sem,ptr->phno);
            return;
        }
        ptr=ptr->link;
    }
    printf("SEARCH UNSUCCESSFUL\n");
}
void main()
{
    int choice,i,n;
    while(1)
    {
        printf("\n---------MENU---------\n");
        printf("\n1. INSERT DETAILS OF N STUDENTS\n2. INSERT STUDENT DETAILS AT BEGINNING\n");
        printf("3. INSERT STUDENT DETAILS AT END\n4. DELETE STUDENT DETAILS FROM BEGINNING\n");
        printf("5. DELETE STUDENT DETAILS FROM END\n6. DELETE SECOND STUDENT DETAILS\n");
        printf("7. DISPLAY\n8. SEARCH\n9. EXIT\n");
        printf("\nENTER YOUR CHOICE\n");
        scanf("%d",&choice);
        switch(choice)
        {
            case 1:printf("ENTER THE NO. OF STUDENTS\n");
                scanf("%d",&n);
                for(i=0;i<n;i++)
                insertend();
                break;
            case 2:insertbeg();
                break;
            case 3:insertend();
                break;
            case 4:deletebeg();
                break;
            case 5:deleteend();
                break;
            case 6:deletesecond();
                break;
            case 7:display();
                break;
            case 8:search();
                break;
            case 9:exit(0);
            default:printf("INVALID CHOICE\n");
        }
    }
}




Referred From :  GURUPRASAD M S



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void read();
void insertatfront();
void deleteatfront();
void insertatend();
void deleteatend();
void display();
struct node
{
char usn[20],name[20],branch[20];
int sem,ph;
struct node* link;
};
struct node* root=NULL;
struct node* temp=NULL;
void main()
{
int ch,n;
while(1)
{
printf("\n********MENU*********");
printf("\n\n1.CREATE A SLL OF N STUDENTS 
                       USING FRONT INSERTION \n 2.INSERT AT FRONT \n3.DELETE AT FRONT\n4.INSERT     
                      AT END\n5.DELETE AT END\n6.DISPLAY
                      \n7.EXIT\n\n");

 printf("Enter your choice\n");
                scanf("%d",&ch);
switch(ch)
{

case 1:printf("Enter the Number of students\n");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
insertatfront();
}
break;
case 2:insertatfront();break;
case 3:deleteatfront();break;
case 4:insertatend();break;
case 5:deleteatend();break;
case 6:display();break;
case 7:exit(0);
default:printf("*********ENTER A VALID CHOICE**********\n");
}
}
}
void read()
{
char usn[20],name[20],branch[20];
int sem,ph;
temp=root;
temp=(struct node*)malloc(sizeof(struct node));
printf("\n ENTER THE NAME,USN,BRANCH,SEM,PHONE NO OF STUDENT\n");
scanf("%s %s %s %d %d",name,usn,branch,&sem,&ph);
strcpy(temp->name,name);
strcpy(temp->usn,usn);
strcpy(temp->branch,branch);
temp->sem=sem;
temp->ph=ph;
}
void insertatfront()
{
read();
temp->link=root;
root=temp;
}
void display()
{
int num=0;
temp=root;
if(root==NULL)
{
printf("\nSTUDENT DETAILS NOT FOUND\n");
}
else
{
printf("DETAILS OF STUDENT:\n");
while(temp!=NULL)
{
printf("%s %s %s %d %d \n",temp->name,temp->usn,temp->branch,temp->sem,temp->ph);
temp=temp->link;
num=num+1;
}
printf("NUMBER OF NODES=%d\n",num);
}
}
void deleteatfront()
{
temp=root;
if(root==NULL)
{
printf("\n*************STUDENT DETAILS NOT FOUND********************\n");
return;
}
else
{
printf("DETAILS OF DELETED STUDENT:\n");
printf("%s %s %s %d %d \n",temp->name,temp->usn,temp->branch,temp->sem,temp->ph);
free(root);
root=temp->link;
return;
}
}
void insertatend()
{
read();
temp->link=NULL;
if(root==NULL)
{
root=temp;
}
else
{
struct node* p;
p=root;
while(p->link!=NULL)
{
p=p->link;
}
p->link=temp;
}
}
void deleteatend()
{
struct node* cur;
struct node* pre;
if(root==NULL)
{
printf("\n**************STUDENT DETAILS NOT FOUND**********\n");
return;
}
else if(root->link==NULL)
{
printf("%s %s %s %d %d",root->name,root->usn,root->branch,root->sem,root->ph);
free(root);
root=NULL;
return;
}
else
{
cur=root;
while(cur->link!=NULL)
{
pre=cur;
cur=cur->link;
}
printf("\nDETAILS OF DELETED STUDENT:\n");
printf("%s %s %s %d %d \n",cur->name,cur->usn,cur->branch,cur->sem,cur->ph);
free(cur);
pre->link=NULL;
return;
}
}