0% found this document useful (0 votes)
36 views

Single Linked List: Insertion and Deletion

This document discusses functions for inserting and deleting nodes from a single linked list in C. It defines a node structure with an info field and link pointer. Functions are provided to insert nodes at the beginning, middle, or end of the list, delete a node with a given value, reverse the list, display the list, and count the number of nodes. The main function allows the user to choose an operation and prompts for any required values before calling the corresponding function.

Uploaded by

happyskd1993
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views

Single Linked List: Insertion and Deletion

This document discusses functions for inserting and deleting nodes from a single linked list in C. It defines a node structure with an info field and link pointer. Functions are provided to insert nodes at the beginning, middle, or end of the list, delete a node with a given value, reverse the list, display the list, and count the number of nodes. The main function allows the user to choose an operation and prompts for any required values before calling the corresponding function.

Uploaded by

happyskd1993
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

Single linked list : Insertion and deletion

#include<stdio.h> #include<conio.h> struct node { int info; struct node *link; }; struct node *start,*newptr; struct node *create_new_node(int i); void insertend(struct node *n); void insertmid(struct node *o); void insertbeg(struct node *m); void reverse(int c); void del(int d); void display(struct node *x); int count(struct node *c); void main() { int info,a,c; struct node *np; char ch; start=NULL; clrscr(); do { printf("ENTER YOUR CHOICE:\n"); printf("Enter 1 to insert at begining\n"); printf("Enter 2 to insert after a given element\n"); printf("Enter 3 to insert at end\n"); printf("Enter 4 to delete a particular element\n"); printf("Enter 5 to reverse the current linked list\n"); scanf("%d",&a); if(a==1) { printf("Enter the element\n"); scanf("%d",&info); np=create_new_node(info); insertbeg(np); } else if(a==2) { printf("Enter the element\n"); scanf("%d",&info); np=create_new_node(info); insertmid(np); } else if(a==3) { printf("Enter the element\n"); scanf("%d",&info); np=create_new_node(info); insertend(np); }

} while(ch=='y'); getch();

else if(a==4) { printf("Enter the element\n"); scanf("%d",&info); np=create_new_node(info); del(info); } else if(a==5) { reverse(c); } display(start); c=count(start); printf("The number of nodes are %d\n",c); printf("\nDo you want to proceed? y/n\n"); scanf(" %c",&ch);

struct node *create_new_node(int i) { newptr=(struct node *)malloc(sizeof(struct node)); newptr->info=i; newptr->link=NULL; return newptr; } void insertbeg(struct node *m) { if(start==NULL) { start=m; } else { m->link=start; start=m; } } void insertend(struct node *n) { struct node *temp; if(start==NULL) { start=n; } else { temp=start; while(temp->link!=NULL) temp=temp->link; temp->link=n; }

} void insertmid(struct node *o) { int value; struct node *temp; temp=start; printf("Enter the number after which "); printf("new element has to be inserted:\n"); scanf("%d",&value); while(temp!=NULL) { if(temp->info==value) { o->link=temp->link; temp->link=o; } temp=temp->link; }

void del(int d) { struct node *temp,*ptr; temp=start; while(temp!=NULL) { if(temp->link->info==d) { ptr=temp->link; temp->link=ptr->link; free(ptr); } temp=temp->link; } } void reverse(int c) { struct node *p1,*p2,*p3; if(start->link==NULL) return; p1=start; p2=p1->link; p3=p2->link; p1->link=NULL; p2->link=p1; while(p3!=NULL) { p1=p2; p2=p3; p3=p3->link; p2->link=p1;

} start=p2;

void display(struct node *x) { printf("\nCurrent linked list is:\t"); do { printf("%d\t",x->info); x=x->link; } while(x!=NULL); printf("\n"); } int count(struct node *c) { int co=0; do { co++; c=c->link; } while(c!=NULL); return co; }

Output

You might also like