Linked list in C
/* Linked list is a linear data structure like an Array
but it has capablity to store data as many as user want in a form of Nodes.
Here is a simple linked list program includes Create,display and insertion operations*/
#include
#include
#include
struct node
{ int data;
struct node *link;
}*header,*header2;
void create(int);
void display();
void display2();
void insert_at_first(int);
void insert_at_last(int);
void delete_first();
void delete_last();
void sort();
void split(int);
void merge();
void main(){
int m,i,n,c;
printf("\nWelcome to Linked List Program created by Manshal Khatri");
// Creation and Display
printf("\nHow many Nodes you want in Linkedlist?");
scanf("%d",&n);
for(i=0;idata=x;
tmp->link=NULL;
if(header==NULL){
header=tmp;
}else{
ptr=header;
while(ptr->link!=NULL){
ptr=ptr->link;
}
ptr->link=tmp;
}
}
void display(){
struct node *ptr;
if(header==NULL){
printf("List is empty :(");
}else{
ptr=header;
printf("\n The list is ");
while(ptr!=NULL){
printf(" ->%d",ptr->data);
ptr=ptr->link;
}
}
}
void display2(){
struct node *ptr;
if(header2==NULL){
printf("List is empty :(");
}else{
ptr=header2;
printf("\n The list is ");
while(ptr!=NULL){
printf(" ->%d",ptr->data);
ptr=ptr->link;
}
}
}
void insert_at_first(int x){
struct node *tmp;
tmp=(struct node*)malloc(sizeof(struct node));
tmp->data=x;
tmp->link=NULL;
if(header==NULL){
header=tmp;
}else{
tmp->link=header;
header=tmp;
}
}
void insert_at_last(int x){
create(x);
}
void delete_first(){
struct node *ptr;
if(header==NULL){
printf("Deletion not possible!");
}else{
ptr=header;
header=ptr->link;
free(ptr);
}
}
void delete_last(){
struct node *ptr,*ptr1;
if(header==NULL){
printf("Deletion not possible!");
}else{
ptr=header;
while(ptr->link!=NULL){
ptr1=ptr;
ptr=ptr->link;
}
ptr1->link=NULL;
free(ptr);
}
}
void sort(){
struct node *ptr,*count,*count2;
int tmp;
if(header==NULL){
printf("\n List is empty");
}else{
for(ptr=header;ptr->link!=NULL;ptr=ptr->link){
for(count=header;count->link!=NULL;count=count->link){
count2=count->link;
if(count->data>count2->data){
tmp=count->data;
count->data=count2->data;
count2->data=tmp;
}
}
}
}
}
void split(int x){
struct node *ptr;
int key=1;
if(header==NULL){
printf("\nlist is empty");
}else{
ptr=header;
while(x!=key && ptr->link!=NULL){
ptr=ptr->link;
key++;
}
header2=ptr->link;
ptr->link=NULL;
}
}
void merge(){
struct node *ptr;
if(header==NULL || header2==NULL){
printf("\nList is Empty");
}else{
ptr=header;
while(ptr->link!=NULL){
ptr=ptr->link;
}
ptr->link=header2;
header2=NULL;
}
}
Comments
Post a Comment