Implementation of Singly Linked List

//PROGRAM TO IMPLEMENT SINGLY LINKED LIST\\

#include<stdio.h>

#include<conio.h>

#include<alloc.h>

#include<stdlib.h>

struct node

{

int data;

struct node *link;

};

void append(struct node **,int);

void add_at_begin(struct node **,int);

void del(struct node **,int);

void in_middle(struct node **,int,int);

int count(struct node *);

void display(struct node *);

void main()

{

int num,loc;

char choice;

struct node *p;

p=NULL;

do

{

clrscr();

printf("PROGRAM TO IMPLEMENT SINGLY LINKED LIST\n");

printf("---------------------------------------\n");

printf("\n 1. Create/appending the list");

printf("\n 2. Insert node at begining");

printf("\n 3. Insert node in middle");

printf("\n 4. Deleting a node");

printf("\n 5. Counting the no. of nodes");

printf("\n 6. Displaying the list");

printf("\n 7. Exit");

oper:

gotoxy(1,15);printf(" ");

gotoxy(1,11);printf("\n Enter your choice : ");

choice=getch();

switch(choice)

{

char ans;

case '1':

do

{

printf("Enter any number : ");

scanf("%d",&num);

append(&p,num);

printf("Entr more (y/n) : ");

fflush(stdin);

ans=getchar();

}while(ans!='n');

break;

case '2':

printf("Enter the data : ");

scanf("%d",&num);

add_at_begin(&p,num);

break;

case '3':

printf("\n Enter the data position : ");

scanf("%d",&loc);

printf("\n Enter the data : ");

scanf("%d",&num);

in_middle(&p,loc,num);

break;

case '4':

printf("\n Enter the data u want to delete : ");

scanf("%d",&num);

del(&p,num);

break;

case '5':

printf("\n The no. of nodes are %d",count(p));

getch();

break;

case '6':

display(p);

getch();

break;

case '7':

printf("\n Quiting.......");

getch();

exit(0);

break;

default:

gotoxy(1,15);printf("Invalid choice please Enter correct choice");

getch();

goto oper;

}

}while(choice!=7);

}

void append(struct node **q,int num)

{

struct node *temp,*r;

temp=*q;

if(*q==NULL)

{

temp=(struct node *)malloc(sizeof(struct node));

temp->data=num;

temp->link=NULL;

*q=temp;

}

else

{

temp=*q;

while(temp->link!=NULL)

{

temp=temp->link;

}

r=(struct node *)malloc(sizeof(struct node));

r->data=num;

r->link=NULL;

temp->link=r;

}

}

void display(struct node *q)

{

if(q==NULL)

{

printf("\nEmpty link list can't display the data");

getch();

goto last;

}

while(q!=NULL)

{

printf("\n%d",q->data);

q=q->link;

}

last:

}

int count(struct node *q)

{

int c=0;

if(q==NULL)

{

printf("Empty link list \n");

getch();

goto last;

}

while(q!=NULL)

{

c++;

q=q->link;

}

last:

return c;

}

void add_at_begin(struct node **q,int num)

{

struct node *temp;

if(*q==NULL)

{

printf("Link list is empty can't insert");

getch();

goto last;

}

else

{

temp=(struct node *)malloc(sizeof(struct node));

temp->data=num;

temp->link=*q;

*q=temp;

}

last:

getch();

}

void in_middle(struct node **q,int loc,int num)

{

struct node *temp,*n;

int c=1,flag=0;

temp=*q;

if(*q==NULL)

{

printf("\nLink List is empty can't insert");

getch();

goto last;

}

else

while(temp!=NULL)

{

if(c==loc)

{

n=(struct node *)malloc(sizeof(struct node));

n->data=num;

n->link=temp->link;

temp->link=n;

flag=1;

}

c++;

temp=temp->link;

}

if(flag==0)

{

printf("\nNode specified doesn't Exist can't Enter the Data");

getch();

}

else

{

printf("Data Inserted");

getch();

}

last:

getch();

}

void del(struct node **q,int num)

{

if(*q==NULL)

{

printf("\n Empty linked list cant delete the data");

getch();

goto last;

}

else

{

struct node *old,*temp;

int flag=0;

temp=*q;

while(temp!=NULL)

{

if(temp->data==num)

{

if(temp==*q)

*q=temp->link;

else

old->link=temp->link;

free(temp);

flag=1;

}

else

{

old=temp;

temp=temp->link;

}

}

if(flag==0)

printf("\n Data not found...");

else

printf("\n Data deleted...Tap a key to continue");

getch();

}

last:

getch();

}

Sample output:

PROGRAM TO IMPLEMENT SINGLY LINKED LIST

---------------------------------------

1. Create/appending the list

2. Insert node at beginning

3. Insert node in middle

4. Deleting a node

5. Counting the no. of nodes

6. Displaying the list

7. Exit

Enter your choice : Enter any number : 12

Entr more (y/n) : y

Enter any number : 23

Entr more (y/n) : y

Enter any number : 34

Enter more (y/n) :n

Enter your choice :6

12

23

34

Enter your choice :5

The no. of nodes are 3

Enter your choice :4

Enter the data u want to delete : 25

Data not found...

Enter your choice :3

Enter the data position : 2

Enter the data : 00

Data Inserted

Enter your choice :6

12

23

0

34

Enter your choice :7

Quiting.......

Comments

Popular Posts