C program for Singly Linked list
Singly Linked Lists are a type of data structure. In a singly linked
list, each node in the list stores the contents and a pointer or
reference to the next node in the list. It does not store any pointer or
reference to the previous node. To store a single linked list, only the
reference or pointer to the first node in that list must be stored. The
last node in a single linked list points to nothing.
#include<stdio.h> #include<conio.h> #include<stdlib.h> //............................................Function Creation...........................................// void createlinkedlist(); void display(); void insert_at_first(); void delete_from_first(); void delete_from_end(); void insert_at_selected_position(); void delete_entire_list(); void reverse_nodes(); //.........................................structure node...............................................// struct node { int roll; char name[30]; struct node *next; }; struct node *head; //......................................................MAIN..............................................// int main() { int ch; do { printf("\n\n\n\n\n\n\t\t\t1.Create Linked list"); printf("\n\t\t\t2.Display List"); if(head!=NULL) { printf("\n\t\t\t3.Delete From First\t"); printf("\n\t\t\t4.Delete From end\t"); printf("\n\t\t\t5.Insert at first\t"); printf("\n\t\t\t6.Insert at selected position"); printf("\n\t\t\t7.Delete entire List"); printf("\n\t\t\t8.Reverse List"); } printf("\n\t\t\t9.Exit\t"); scanf("%d",&ch); switch(ch) { case 1: createlinkedlist(); break; case 2: display(); break; case 9: exit (0); break; case 5: insert_at_first(); break; case 3: delete_from_first(); break; case 4: delete_from_end(); break; case 6: insert_at_selected_position(); break; case 7: delete_entire_list(); break; case 8: reverse_list(); break; default: printf("Wrong choice Try again......"); } }while(ch!=3); } //............................................Create linked list.................................................// void createlinkedlist() { system("cls"); struct node *newnode,*temp; newnode=(struct node*)malloc(sizeof(struct node)); printf("\n\n\t\t\tRoll : "); scanf("%d",&newnode->roll); printf("\t\t\tName : "); scanf("%s",&newnode->name); newnode->next=NULL; if(head==NULL) { head=newnode; } else { temp=head; while(temp->next!=NULL) { temp=temp->next; } temp->next=newnode; } } // ......................................................DISPLAY............................................// void display() { system("cls"); struct node *temp; printf("\n\n\t\t\tRoll\t\tName\n"); if(head!=NULL) { for(temp=head;temp!=NULL;temp=temp->next) printf("\t\t\t%d\t\t%s\n",temp->roll,temp->name); } else { printf("\n\t\t\tList is empty Boss... %c %c ",2,2); } } //............................................Insert At FIrst.................................................// void insert_at_first() { system("cls"); struct node *temp,*newnode; newnode=(struct student *)malloc(sizeof(struct node)); printf("\n\n\t\t\tRoll : "); scanf("%d",&newnode->roll); printf("\t\t\tName : "); scanf("%s",&newnode->name); temp=head; head=newnode; newnode->next=temp; return 0; } //..............................................Delete from first.....................................................// void delete_from_first() { system("cls"); struct node *temp; if(head==NULL) { printf("\n\t\t\tList is empty Boss... %c %c ",2,2); } else { temp=head; free(head); head=temp->next; printf("\n\n\t\t\tFirst list deleted from node..."); } return 0; } //..............................................Delete from end................................................// void delete_from_end() { system("cls"); struct node *temp,*newtemp; temp=head; while(temp->next!=NULL) { newtemp=temp; temp=temp->next; if(temp->next==NULL) newtemp->next=NULL; } free(temp); printf("\n\n\t\t\tLast node is deleted...."); return 0; } //..................................................Insert at selected position....................................// void insert_at_selected_position() { struct node *temp; struct node *new_temp,*temp_copy; temp=head; int position,i; printf("\n\n\t\t\tEnter the roll before you want to insert\t"); scanf("%d",&position); for(i=1;i<position;i++) { temp=temp->next; } temp_copy=temp->next; new_temp=(struct node *)malloc(sizeof(struct node)); temp->next=new_temp; printf("\n\n\t\t\tRoll : "); scanf("%d",&new_temp->roll); printf("\t\t\tName : "); scanf("%s",&new_temp->name); new_temp->next=temp_copy; return 0; } //..................................................free entire list........................................// void delete_entire_list() { system("cls"); struct node *temp,*had; temp=head; if(temp->next==NULL) { free(temp); } else { while(temp!=NULL) { had=temp; temp=temp->next; free(had); } } head=NULL; return 0; } //.......................................Reverse List....................................// void reverse_list() { system("cls"); if(head->next==NULL) { printf("\n\n\tsorry BOSS %c reverse not possible...",1); } else { struct node *p1,*p2,*p3; p1=head; p2=p1->next; p3=p1->next->next; p1->next=NULL; while(p3!=NULL) { p2->next=p1; p1=p2; p2=p3; p3=p3->next; } p2->next=p1; head=p2; } }
nice
ReplyDelete