Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

Datastructures asignment

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
/* IMPLEMENTATION OF THE STACK USING ARRAYS */
/* STACK_A.C */
# include<stdio.h>
# include<string.h>
# include<ctype.h>
#...
/* Function main */
void main()
{      int data;
       char choice;
       int q = 0;
       int top = -1;
       clrscr(...
/* THIS PROGRAM DEMONSTRATES THE STACK OPERATIONS USING OOPS-
CLASS STACK*/
/* cstack.cpp */

#include<iostream.h>
#includ...
Anuncio
Anuncio
Anuncio
Próximo SlideShare
DataStructures notes
DataStructures notes
Cargando en…3
×

Eche un vistazo a continuación

1 de 16 Anuncio

Más Contenido Relacionado

Presentaciones para usted (20)

A los espectadores también les gustó (16)

Anuncio

Similares a Datastructures asignment (20)

Más reciente (20)

Anuncio

Datastructures asignment

  1. 1. /* IMPLEMENTATION OF THE STACK USING ARRAYS */ /* STACK_A.C */ # include<stdio.h> # include<string.h> # include<ctype.h> #include<conio.h> # define size 3 int top = -1; int flag = 0; int stack[size]; void push(int *, int); int pop(int *); void display(int *); /* Definition of the push function */ void push(int s[], int d) { if(top ==(size-1)) flag = 0; else { flag = 1; ++top; s[top] = d; } } /* Definition of the pop function */ int pop(int s[]) { int popped_element; if(top == -1) { popped_element = 0; flag = 0; } else { flag = 1; popped_element = s[top]; --top; } return (popped_element); } /* Definition of the display function */ void display(int s[]) { int i; if(top == -1) printf("n Stack is empty"); else { for(i = top; i >= 0; --i) printf("n %d", s[i] ); } }
  2. 2. /* Function main */ void main() { int data; char choice; int q = 0; int top = -1; clrscr(); do { printf(" n enter i to insert"); printf(" n enter p to delete"); printf(" n enter q to quit"); printf("n enter your choice : "); do { choice = getchar(); choice =tolower(choice); }while(strchr("ipq",choice)==NULL); switch(choice) { case 'i' : printf("n Input the element to push:"); scanf("%d", &data); push(stack, data); if(flag) { printf("n After inserting "); display(stack); if(top == (size-1)) printf("n Stack is full"); } else printf("n Stack overflow after pushing"); break; case 'p' : data = pop(stack); if(flag) { printf("n Data is popped: %d", data); printf("n Rest data in stack is as follows:n"); display(stack); } else printf("n Stack underflow" ); break; case 'q': q = 1; } } while(!q); }
  3. 3. /* THIS PROGRAM DEMONSTRATES THE STACK OPERATIONS USING OOPS- CLASS STACK*/ /* cstack.cpp */ #include<iostream.h> #include<conio.h> #include<stdio.h> class stack { int stack[30]; int top,n; public: stack() { top=-1; //indicates stack is empty n=5; } void push(int); int pop(); void display(); }; void stack::push(int x) { if(top<n) { top++; stack[top]=x; } else cout<<"n the stack is full"; } int stack::pop() { int v=-99; if(top>=0) { v=stack[top]; top--; } return v; } void stack::display() { int i; if(top>=0) { for(i=top;i>=0;i--) cout<<stack[i]<<" "; } else cout<<"n stack is empty"; } void main() { stack s; char ch; int x; clrscr(); do { cout<<"n enter i to insert an element"; cout<<"n enter d to view the contents"; cout<<"n enter r to remove an element";
  4. 4. cout<<"n enter q to quit"; cout<<"n enter your choice : "; cin>>ch; switch(ch) { case 'i': cout<<"n enter the value to insert"; cin>>x; s.push(x); break; case 'd': cout<<"n"; s.display(); break; case 'r': x=s.pop(); if(x==-99) cout<<"n stack is empty"; else cout<<" n the element removed is "<<x; break; } }while(ch!='q'); } OUTPUT: enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : r stack is empty enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : i enter the value to insert : 1 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : i enter the value to insert : 2 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : i enter the value to insert : -1
  5. 5. enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : d -1 2 1 enter the value to insert : 2 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : i enter the value to insert : -1 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : d -1 2 1 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : r the element removed is -1 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : r the element removed is 2 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : r the element removed is 1 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : r stack is empty
  6. 6. /*THE FOLLOWING PROGRAM CONVERTS ANY infix EXPRESSION TO POSTFIX postfix.c */ #include<iostream.h> #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<ctype.h> #include<string.h> int precedence(char op) { switch(op) { case '-':return 1; case '+':return 1; case '*':return 2; case '/':return 2; case '$':return 3; case '(':return 0; } return -1; } void push(char a[],int *top,char ch) { a[*top]=ch; (*top)++; } char pop(char a[],int *top) { *top=*top-1; return a[*top]; } void main() { int top=0,i=0,j=0,k,l,length=0; char stack[50],infix[50],postfix[50]; char ch; clrscr(); cout<<"Enter the infix expression : n"; scanf("%s",infix); length=strlen(infix); for(i=0;i<length;i++) { if(infix[i]=='(') push(stack,&top,infix[i]); if(isalpha(infix[i])) { postfix[j]=infix[i]; j++; }
  7. 7. if(infix[i]==')') { while(stack[top-1]!='(') { postfix[j]=pop(stack,&top); j++; } pop(stack,&top); } if(infix[i]=='+'||infix[i]=='-'||infix[i]=='/'||infix[i]=='*'||infix[i]=='$') { if(precedence(stack[top-1])<precedence(infix[i])) push(stack,&top,infix[i]); else { while(precedence(stack[top-1])>=precedence(infix[i])) { postfix[j]=pop(stack,&top); j++; } push(stack,&top,infix[i]); } } } while(top!=0) { postfix[j]=pop(stack,&top); j++; } cout<<"nThe postfix expression is :n"; for(k=0;k<j;k++) cout<<postfix[k]; getch(); } OUTPUT: Enter the infix expression : (((X*Y-A*B)-D/F)+A)*B The postfix expression is : XY*AB*-DF/-A+B* do you want to continue (y/n) : y Enter the infix expression : A*B-P/(Q*(A-C+P*D)/B) The postfix expression is : AB*PQAC-PD*+*B//- do you want to continue (y/n) : n
  8. 8. /* INSERTION AND DELETION IN A QUEUE ARRAY IMPLEMENTATION */ /* queue_a.c */ # include<stdio.h> # include<string.h> # include<ctype.h> # include<stdlib.h> # define size 5 int ch; int q[size]; int rear = 0; int front = 0; void Insert_queue(); void Delete_queue(); void Display_queue(); /* Function to create queue */ void Insert_queue() { printf("n Input the element :"); scanf("%d", &ch); if(rear < size) { rear ++; q[rear] = ch ; if(front == 0) front = 1; } else printf("n Queue is overflow"); } /* Function to perform delete operation */ void Delete_queue() { if (front == 0) { printf("n Underflow"); return ; } else { ch = q[front]; printf("n Element deleted : %d", ch); } if(front == rear) { front = 0; rear = 0; } else front = front + 1; }
  9. 9. /* Output function */ void Display_queue() //char q[]) { int i; if (front == 0) return; for(i = front ; i <= rear; i++) printf(" %d ", q[i]); } /* Function main */ void main() { int k = 0; char choice; clrscr(); do { printf("nInsert->i Delete->d Quit->q:"); printf("nInput the choice : "); do { choice = getchar(); choice = tolower(choice); }while(strchr("idq",choice)==NULL); switch(choice) { case 'i' : Insert_queue(); printf("n Queue after inserting "); Display_queue(); break; case 'd' : Delete_queue(); printf("n Queue after deleting:n"); Display_queue(); break; case 'q': k = 1; } } while(!k); }
  10. 10. /* THIS PROGRAM DEMONSTRATES OPERATIONS ON A CIRCULAR QUEUE USING OOPS-CLASS QUEUE –cqueue.cpp*/ #include<iostream.h> #include<conio.h> #include<stdio.h> class queue { int q[30]; //queue declaration int f,r ; int n; public: queue() //constructor { f=r=0; //indicates queue is empty n=5; } void insert(int); int delet(); void display(); }; void queue::insert(int x) { if((r+1)%n==f) cout<<"n the queue is full"; else { r=(r+1)%n; q[r]=x; } } int queue::delet() { int v=-99; if(f!=r) { f=(f+1)%n; v=q[f]; } return v; } void queue::display() { int i; if(f!=r) { i=f; while(i!=r) { i=(i+1)%n; cout<<q[i]<<" "; } } else cout<<"n queue is empty"; } void main() { queue s; char ch;int x; clrscr(); do
  11. 11. { cout<<"n enter i to insert an elemnt"; cout<<"n enter d to view the contents"; cout<<"n enter r to remove an elemnt"; cout<<"n enter q to quit"; cout<<"n enter your choice : "; cin>>ch; switch(ch) { case 'i': cout<<"n enter the value to insert"; cin>>x; s.insert(x); break; case 'd': cout<<"n"; s.display(); break; case 'r': x=s.delet(); if(x==-99) cout<<"n queue is empty"; else cout<<" n the element removed is "<<x; break; } }while(ch!='q'); } OUTPUT : assume size of queue is 3 integers Insert->i Delete->d Quit->q: Input the choice : i Input the element :1 Queue after inserting 1 Insert->i Delete->d Quit->q: Input the choice : i Input the element :2 Queue after inserting 1 2 Insert->i Delete->d Quit->q: Input the choice : d Element deleted : 1 Queue after deleting: 2 Insert->i Delete->d Quit->q: Input the choice : d Element deleted : 2 Queue after deleting: queue is empty Insert->i Delete->d Quit->q: Input the choice : q
  12. 12. /* THIS PROGRAM DEMONSTRATES THE CREATION OF A SIMPLE LINKED LIST INCORPORATING ALL FUNCTIONS OF INSERTION AND DELETION AT THE BEGINNING , END AND AFTER ANY PARTICULAR NODE WITH DISPLAY FEATURES */ /* LINKLIST.C */ # include <stdio.h> # include <malloc.h> struct link { int info; struct link *next; }; int i,number; struct link start, *previous, *new1; void insertiona(struct link *); void insertionb(struct link *); void create_list(struct link *); void insertione(struct link *); void display(struct link *); void delete_nodef(struct link *); void delete_node(struct link *); void delete_nodel(struct link *); /* Function to create a linked list */ void create_list(struct link *node) { char ch; start.next = NULL; /* Empty list */ node = &start; /* Point to the start of the list */ i = 0; printf("n Input choice n for break: "); ch = getchar(); while(ch != 'n') { node->next = (struct link* ) malloc(sizeof(struct link)); node = node->next; printf("n Input the node: %d: ", i+1); scanf("%d", &node->info); node->next = NULL; fflush(stdin); printf("n Input choice n for break: "); ch = getchar(); i++; } printf("n Total nodes = %d", i); } /* Inserting a node after a particular node*/ void insertiona(struct link *node) { int ins_node,x;
  13. 13. node = start.next; previous = &start; printf("n Input value of the nodeafter which you want to insert:"); scanf("%d", &ins_node); while((node->info!=ins_node)&&(node!=NULL)) node=node->next; if(node!=NULL) { new1 = (struct link* ) malloc(sizeof(struct link)); printf("n enter the new value to be inserted : "); scanf(" %d",&new1->info); new1->next = node->next; node->next = new1; } else printf("n insertion is not possible"); } /* Display the list */ void display(struct link *node) { node = start.next; while (node) { printf(" %d ", node->info); node = node->next; printf(" "); } } void main() { int c; struct link *node = (struct link *) malloc(sizeof(struct link)); clrscr(); do { printf("n enter 1 to create the list"); printf("n enter 2 to insert a node at the beginning"); printf("n enter 3 to insert a node anywhere"); printf("n enter 4 to append a node "); printf("n enter 5 to display the list"); printf("n enter 6 to remove a node from beginning"); printf("n enter 7 to remove a node anywhere"); printf("n enter 8 to remove a node from the end"); printf("n enter 9 to quit"); printf("n enter your choice : "); scanf("%d",&c); switch(c) { case 1 : create_list(node); printf("n Created list is as follows:n"); display(node); break; case 2 : insertionb(node);
  14. 14. break; case 3 : insertiona(node); break; case 4 : display(node); insertione(node); break; case 5 : display(node); break; case 6 : delete_nodef(node); break; case 7 : delete_node(node); break; case 8 : delete_nodel(node); break; case 9 : exit(0); } }while((c>=1)&&(c<=9)); getch(); } /* Inserting a node at the beginning*/ void insertionb(struct link *node) { node = start.next; previous = &start; new1 = (struct link* ) malloc(sizeof(struct link)); new1->next = node ; previous->next = new1; printf("n Input the fisrt node value: "); scanf("%d", &new1->info); } /* Inserting a node at the end */ void insertione(struct link *node) { node = start.next; previous = &start; if(node==NULL) { printf("n the list is empty to create return "); return; } else { while(node->next!=NULL) node = node->next; new1 = (struct link* ) malloc(sizeof(struct link)); printf("n Input the value to be inserted at the end : "); scanf(" %d",&new1->info); node->next=new1; new1->next=NULL; } } /* Removing the first node */
  15. 15. void delete_nodef(struct link*node) { node = start.next; previous = &start; if (node == NULL) printf("n Under flow"); else { previous->next = node->next; free(node); } } /* Removing a node when information is known*/ void delete_node(struct link *node) { int node_number = 1; int del_node; node = start.next; previous = &start; printf("n Input information of a node you want to delete: "); scanf("%d", &del_node); while(node) { if(node->info == del_node) { printf("n Position of the information in the list is : %d", node_number); previous->next = node->next; free(node); break ; } else { node = node->next; previous = previous->next; } node_number++; } } /* Removing the last node */ void delete_nodel(struct link *node) { int node_number = 0; node = start.next; previous = &start; if (node == NULL) printf("n Underflow"); else while(node) { node = node->next; previous = previous->next; node_number ++; } node = start.next; previous = &start;
  16. 16. while(node_number != 1) { node = node->next; previous = previous->next; node_number --; } if(node_number == 1) { previous->next = node->next; free(node); } }

×