Showing posts with label double. Show all posts
Showing posts with label double. Show all posts

Saturday, August 9, 2014

Program for various operations with doubly link list

Program for the various operations with a doubly link list. Comment below if you need help

#include<stdio.h>

#include<stdlib.h>

struct node

{

 int data;

 struct node *next,*prev;

}*start=NULL,*newn,*temp,*ptr;

int num,pos,ele;

void insert_beg();

void insert_beg();

void insert_end();

void insert_aftr();

void insert_pos();

void delete_beg();

void delete_end();

void delete_ele();

void display();

main()

{

 int ch,c,ch1,p,ch2,q;

 do

 {

 printf("\n DLL MENU\n1.Ins\n2.Del\n3.Disp");

 printf("\nEnter the number corresponding to your operation:");

 scanf("%d",&ch);

 switch(ch)

 {

 case 1:do

 {

 printf("\nINSERT MENU\n1.beginning\n2.End\n3.After a node\n4.at a

position\n5.Display");

 printf("\nEnter your choice:");

 scanf("%d",&ch1);

 switch(ch1)

 {

 case 1:insert_beg();

 break;

 case 2:insert_end();

 break;

 case 3:insert_aftr();

 break;

 case 4:insert_pos();

 break;

 case 5:display();

 break;

 default:printf("\nWrong Choice\n");

 break;

 }

 printf("\nDo you want to continue-Insert Menu?(1.Yes;2.No)");

 scanf("%d",&p);

 }while(p!=2);

 break;

 case 2:do

 {

 printf("\nDELETE MENU\n1.Front\n2.End\n3.A specific node\n4.Display");

 printf("\nEnter your choice:");

 scanf("%d",&ch2);

 switch(ch2)

 {

 case 1:delete_beg();

 break;

 case 2:delete_end();

 break;

 case 3:delete_ele();

 break;

 case 4:display();

 break;

 default:printf("\nWrong Choice\n");

 break;

 }

 printf("\nDo you want to continue-Delete Menu?(1.Yes;2.No):");

 scanf("%d",&q);

 }while(q!=2);

 break;

 case 3:display();

 break;

 default:printf("\nWrong Choice\n");

 break;

 }

 printf("\nDo you want to continue-Main Menu?(1.Yes;2.No):");

 scanf("%d",&c);

 }while(c!=2);

}

void display()

{

 if(start==NULL)

 printf("\nLink List is empty\n");

 else

 {

 temp=start;

 while(temp->next!=NULL)

 {

 printf("%d<->",temp->data);

 temp=temp->next;

}

printf("%d",temp->data);

 }

}

void insert_beg()

{

 printf("\nEnter the element to be inserted:");

 scanf("%d",&num);

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

 newn->data=num;

 if(start==NULL)

 {

 newn->next=NULL;

 newn->prev=NULL;

 }

 else

 {

 newn->prev=NULL;

 newn->next=start;

 start->prev=newn;

 }

 start=newn;

}

void insert_end()

{

 printf("\nEnter the element to be inserted:");

 scanf("%d",&num);

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

 newn->data=num;

 if(start==NULL)

 {

 newn->next=NULL;

 newn->prev=NULL;

 start=newn;

 }

 else

 {

 temp=start;

 while(temp->next!=NULL)

 {

 temp=temp->next;

 }

 temp->next=newn;

 newn->prev=temp;

 newn->next=NULL;

 }

}

void insert_aftr()

{

 int flag=0;

 if(start==NULL)

 printf("\nLink List is empty\n");

 else

 {

 printf("\nEnter the element after which insertion must be done:");

 scanf("%d",&ele);

 printf("\nEnter the element to be inserted:");

 scanf("%d",&num);

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

 newn->data=num;

 temp=start;

 while(temp!=NULL)

 {

 if(temp->data==ele)

 {

 if(temp->next==NULL)

 insert_end();

 else

{ newn->next=temp->next;

 newn->prev=temp;

 temp->next->prev=newn;

 temp->next=newn;

 }

 flag=1;

 break;

 }

 temp=temp->next;

 }

 if(flag==0)

 printf("\nElement not found\n");

 }

}

void insert_pos()

{

 int k=1,flag=0;

 printf("\nEnter the position for insertion:");

 scanf("%d",&pos);

 if(pos==1)

 insert_beg();

 else

 {

 printf("\nEnter the element to be inserted:");

 scanf("%d",&num);

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

 newn->data=num;

 temp=start->next;

 while(temp!=NULL)

 {

 k++;

 if(k==pos)

 {

 newn->next=temp;

 temp->prev->next=newn;

 newn->prev=temp->prev;

 temp->prev=newn;

 flag=1;

 break;

 }

 temp=temp->next;

 }

 if(flag==0)

 printf("\nPosition not found\n");

 }

}

void delete_beg()

{

 if(start==NULL)

 printf("\nLL is empty\n");

 else

{

 if(start->next==NULL)

{

free(start);

start=NULL;

}

else

 {

 temp=start;

 start=start->next;

 start->prev=NULL;

 free(temp);

 }

}

}

void delete_end()

{

 if(start==NULL)

 printf("\nLL is empty\n");

 else if(start->next==NULL)

 delete_beg();

 else

 {ptr =temp;

 temp=start;

 while(temp->next!=NULL)

 {

 temp=temp->next;

 }

 temp->prev->next=NULL;

 free(temp);

 }

}

void delete_ele()

{

 int flag=0;

 if(start==NULL)

 printf("\nLL is empty\n");

 else

 {

 printf("\nEnter the element to be deleted:");

 scanf("%d",&num);

 temp=start;

 while(temp!=NULL)

 {

 if(start->data==num)

 {

 delete_beg();

 flag=1;

 temp=start;

 break;

 }

 else if(temp->data==num)

 {

 if(temp->next==NULL)

 {

 delete_end();

 flag=1;

 break;

 }

 else

 {

 ptr=temp;

 temp->prev->next=temp->next;

 temp->next->prev=temp->prev;

 free(ptr);

 flag=1;

 break;

 }

 }

 temp=temp->next;

 }

 if(flag==0)

 printf("\nElement not found\n");

 }

}

Program of the various operations on a dequeue

This is a simple C program of the various operation on a dequeue.

#include<stdio.h> void input_re(); void output_re(); void insert_rear(); void insert_front(); void delet_front(); void delet_rear(); void display(); int dq[50],n,ch,rear=-1,front=-1,d,x,i; main() { int ch,c; printf("\nEnter the size of deque:"); scanf("%d",&n); do{ printf(" MENU\n1.input restricted deque\n2.output restricted deque"); printf("\n enter the choice"); scanf("%d",&ch); switch(ch) { case 1: input_re(); break; case 2: output_re(); break; default: printf("\n Wrong option"); } printf("\n do you want to continue::"); scanf("%d",&c); }while(c==1); } void input_re() { int c; do { int ch; printf("MENU\n1.insert rear\n2.delete front\n3.delete rear\n4.display"); printf("\n enter the choice"); scanf("%d",&ch); switch(ch) { case 1: insert_rear(); break; case 2: delet_front(); break; case 3: delet_rear(); break; case 4: display(); break; default: printf("\n Wrong option"); } printf("\n do you want to continue the input restricted function :"); scanf("%d",&c); }while(c==1); } void output_re() { int ch,c; do { printf("menu\n1.insert rear\n2.insert front\n3.delet from front\n4.display"); printf(" enter the choice"); scanf("%d",&ch); switch(ch) { case 1: insert_rear(); break; case 2: insert_front(); break; case 3: delet_front(); break; case 4: display(); break; default: printf(" invalid option"); } printf("\n do you want to continue the output restricted function:"); scanf("%d",&c); }while(c==1); } void insert_rear() { printf("\n enter the element to be inserted"); scanf("%d",&x); if(((front==0)&&(rear==n-1))||(front==rear+1)) printf("\n deque overflow"); else if((front==-1)&&(rear==-1)) {front=0; rear=0; dq[rear]=x; } else rear=(rear+1)%n; dq[rear]=x; } void insert_front() { printf("\n enter the element to insert:"); scanf("%d",&x); if(((front==0)&&(rear==n-1))||(front==rear+1)) printf("\n deque is full"); else if((front==-1)&&(rear==-1)) front=rear=0; else { if(front==0) front=n-1; else front=front-1; dq[front]=x; }} void delet_front() { if((front==-1)&&(rear==-1)) printf("\n deque is empty"); else { if(front==rear) { front=-1; rear=-1; } else front++; } } void delet_rear() { if((front==-1)&&(rear==-1)) printf("\n deque is empty"); else { if(front==rear) { front=-1; rear=-1; } else { if(rear==0) rear=n-1; else rear=rear-1; } } } void display() { if((front==-1)&&(rear==-1)) printf("\n deque is empty"); else { if(front>rear) { for(i=front;i<n;i++) { d=dq[i]; printf("%d\t",d); } for(i=0;i<=rear;i++) { d=dq[i]; printf("%d\t",d); } } else { for(i=front;i<=rear;i++) { d=dq[i]; printf("%d\t",d); } } } }