Data Structure

  • Uploaded by: Kristine Bond
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Data Structure as PDF for free.

More details

  • Words: 2,335
  • Pages: 55
/* ARRAY IMPLEMENTATION OF STACK ADT */ #include<stdio.h> #include #include<stdlib.h> #include #define STACK_SIZE 5 void displaymenu(); int PUSH(int); int POP(int *); int size(); int peek(int *); void view(); int top=-1,stack[STACK_SIZE]; int isfull(); int isempty(); void main() { int status,data,choice; clrscr(); while(1) { displaymenu(); printf("enter your choice: "); scanf("%d",&choice); switch(choice) { case 1: {

printf("\n enter the new data: "); scanf("%d",&data); fflush(stdin); status=PUSH(data); if(status==-1) printf("stack overflow on the PUSH"); break; } case 2: { status=POP(&data); if(status==-1) printf("stack overflow ont the POP"); else printf("The poped value is: %d",data); break; } case 3: { status=peek(&data); if(status==-1) printf("\n the stack is empty"); else printf("\n the top most value is: %d",data); break; } case 4: { printf("\n The stack size is: %d",STACK_SIZE);

printf("\n The current elements in the stack: %d",size()); break; } case 5: { view(); break; } default: printf("\n End of Run of your program"); exit(0); } } } void displaymenu() { printf("\n 1.PUSH"); printf("\n 2.POP"); printf("\n 3.PEEK"); printf("\n 4.SIZE"); printf("\n 5.VIEW"); printf("\n 6.EXIT \n"); } void view() { int i; if(isempty()) { printf("\n stack is empty");

return; } printf("\n Elements from the top of the stack: \n\n\t\t"); for(i=top;i>0;i--) { printf("--i %d",stack[i]); } if(isfull()) printf("\n stack is full"); } int size() { return top+1; } int peek(int *value) { if(isempty()) return -1; else *value=stack[top]; return 0; } int PUSH(int data) { if(isfull()) return -1; else stack[++top]=data; return 0;

} int isfull() { if(top==STACK_SIZE-1) return 1; else return 0; } int POP(int *value) { if(isempty()) return-1; else *value=stack[top--]; return 0; } int isempty() { if(top==-1) return 1; else return 0; }

OUTPUT: 1.push 2.pop 3.peek 4.size 5.view 6.exit Enter your choice:1 Enter the new data siva 1.push 2.pop 3.peek 4.size 5.view

6.exit Enter your choice:2 The popped value is: -28705 1.push 2.pop 3.peek 4.size 5.view 6.exit Enter your choice:3 The top most value is: -28705 1.push 2.pop 3.peek 4.size 5.view 6.exit Enter your choice:4 The stack size is: 5 The current element in the stack: 1.push 2.pop 3.peek 4.size 5.view 6.exit Enter your choice:5 Elements from top of the stack:->-28705 1.push 2.pop

3.peek 4.size 5.view 6.exit Enter your choice:6

/* ARRAY IMPLEMENTATION OF LIST ADT */ #include<stdio.h> #include #include<process.h> #define MAXLEN 100 char data; int p; typedef struct { int len; char element[MAXLEN]; } olist; olist init() { olist l; l.len=0; return l; } olist insert(olist l,char ch,int pos) { int i; if((pos<0)||(pos>l.len)) { fprintf(stderr,"insert:invalid index %d \n",pos); return l; }

if(l.len==MAXLEN) { fprintf(stderr,"insert:list is already full \n"); return l; } for(i=l.len;i>pos;--i) l.element[i]=l.element[i-1]; l.element[pos]=ch; ++l.len; return l; } olist deletes(olist l,int pos) { int i; if((pos<0)||(pos>=l.len)) { fprintf(stderr,"delete:invalid index %d \n",pos); return l; } for(i=pos;i
return -1; } char getelement(olist l,int pos) { if((pos<0)||(pos>=l.len)) { fprintf(stderr,"get element:invalid index %d \n",pos); return '\0'; } return l.element[pos]; } void print(olist l) { int i; for(i=0;i
clrscr(); printf("1.Insert ** 2.Delete ** 3.element at position ** 4.Position of element ** 5.View list\n"); l=init(); while(1) { printf("\nenter your choice"); scanf("%d",&c); switch(c) { case 1: { input(l,data,p); printf("\n"); break; } case 5: { printf("\ncurrent list is: "); print(l); printf("\n"); break; } case 4: { char ch; fflush(stdin); printf("Enter character to get position: "); ch=getchar(); printf("character present at %d",ispresent(l,ch));

break; } case 2: { int dp; printf("Enter position of element to be delete: "); scanf("%d",&dp); l=deletes(l,dp); printf("\n"); break; } case 3: { int gp; printf("enter position to get a element: "); scanf("%d",&gp); printf("element of position1:%c\n",getelement(l,gp)); break; } default: { printf("Invalid choice...end of your program"); exit(0); } } } }

OUTPUT: 1.insert** 2.delete** 3.element at position** 4.position of element** 5.view list Enter your choice: 1 Enter character to insert: 2 Enter position : 2 Insert : list is already full Enter your choice: 2 Enter position of element to delete: 1 Delete: Invalid index 1 Enter your choice:3 Enter position to get a element : 1 Getelement : invalid index Element of position 1 :0 Enter your choice: 4 Enter character to set position : 2 Character present at –1

Enter your choice : 5 Current list is god

/* POINTER IMPLEMENTAION OF STACK ADT */ #include<stdio.h> #include #include<stdlib.h> typedef struct node { int data; struct node*next; } stack; stack*getdata(); void view(); void displaymenu(); int push(int value); int pop(int*value); void releasenode(stack*newnode); stack*topstk=NULL; void main() { int data,status,choice; clrscr(); displaymenu(); while(1) { printf("\n enter the choice \n"); scanf("%d",&choice); switch(choice) {

case 1: printf("enter the elements \n"); fflush(stdin); scanf("%d",&data); status=push(data); if(status==-1) printf("\n mem is not available \n"); break; case 2: status=pop(&data); if(status==-1) printf("\n stack underflow on pop \n"); else printf("\n poped value is %d",data); break; case 3: view(); break; default: printf("\n end of the program \n"); exit(0); } }} void displaymenu() { printf("\n Representation of stack using linked list \n"); printf("\n\t1.push\n\t2.pop\n\t3.view\n\t4.exit"); } int push(int value)

{ extern stack*topstk; stack*newptr; newptr=getdata(); if(newptr==NULL) return(-1); newptr->data=value; newptr->next=topstk; topstk=newptr; return(0); } int pop(int*value) { extern stack*topstk; stack*temp; if(topstk==NULL) return(-1); temp=topstk; topstk=topstk->next; *value=temp->data; releasenode(temp); return(0); } stack*getdata() { return(stack*)malloc(sizeof(stack)); } void releasenode(stack*newnode) { free(newnode);

} void view() { extern stack*topstk; stack*top=topstk; if(top==NULL) { printf("\n stack is empty"); return; } printf("\n the content of the stack is"); for(;top!=NULL;top=top->next) printf("\n\t%d",top->data); }

OUTPUT: Representation of stack using linked list: 1.push 2.pop 3.view 4.exit Enter your choice: 1 Enter the element 23 Enter your choice: 1 Enter the element 45 Enter your choice:3 The content of the stack is 23 45 Enter your choice:2 The popped value is 45 Enter your choice:3 The content of the stack is 23

Enter your choice:4

/* POINTER IMPLEMENTATION USING LIST ADT */ #include<stdio.h> #include #include<stdlib.h> struct node { int data; struct node*next; }; struct node*start=NULL,*ptr; int n,element,index,delnode; void create(); void insert(); void deletion(); void disp(); void main() { int ch; clrscr(); do { printf("\nLINKED LIST: "); printf(" 1.create 2.insert 3.deletion 4.display 5.exit\n"); printf("\nEnter your choice: "); scanf("%d",&ch); switch(ch) {

case 1: create(); break; case 2: insert(); break; case 3: deletion(); break; case 4: disp(); break; case 5: break; } } while(ch!=5); } void create() { struct node*temp; printf("\nEnter the number: "); scanf("%d",&n); if(start==NULL) { start=(struct node*)malloc(sizeof(struct node)); start->data=n; start->next=NULL; ptr=start; }

else { temp=(struct node*)malloc(sizeof(struct node)); temp->data=n; temp->next=NULL; ptr->next=temp; ptr=temp; } } void insert() { struct node*temp,*x; printf("\nenter the element to be inserted: "); scanf("%d",&element); printf("\nenter the index of the element: "); scanf("%d",&index); ptr=start; while(ptr->data!=index) { temp=ptr; ptr=ptr->next; } x=(struct node*)malloc(sizeof(struct node)); if(ptr!=start) { x->data=element; x->next=ptr; temp->next=x; } else

{ start=x; start->data=element; start->next=ptr; } } void deletion() { struct node*pre; printf("\nenter the node to be deleted: "); scanf("%d",&delnode); printf("\n%d is deleted from the list\n",delnode); ptr=start; while(ptr->data!=delnode) { pre=ptr; ptr=ptr->next; } if(ptr!=start) pre->next=ptr->next; else { start=ptr->next; free(ptr); } } void disp() { ptr=start; printf("\nThe element in the list: \n");

while(ptr!=NULL) { printf("%d\n",ptr->data); ptr=ptr->next; } getch(); }

OUTPUT: LINKED LIST: 1.create 2.Insert 3.Deletion 4.Display 5.Exit Enter your choice: 1 Enter the number: 2 LINKED LIST: 1.create 2.Insert 3.Deletion 4.Display 5.Exit Enter your choice: 1 Enter the number: 3 LINKED LIST: 1.create 2.Insert 3.Deletion 4.Display 5.Exit Enter your choice: 2 Enter the element to be inserted: 4 Enter the index of the element:2 LINKED LIST: 1.create 2.Insert 3.Deletion 4.Display 5.Exit Enter your choice: 4 The elements in the list are 4 2 3 LINKED LIST: 1.create 2.Insert 3.Deletion 4.Display 5.Exit Enter your choice: 3 Enter the node to be deleted: 2 2 is deleted from the list

LINKED LIST: 1.create 2.Insert 3.Deletion 4.Display 5.Exit Enter your choice: 4 The elements in the list are 4 3 LINKED LIST: 1.create 2.Insert 3.Deletion 4.Display 5.Exit Enter your choice: 5

QUEUE IMPLEMENTATION USING ARRAYS */ #include<stdio.h> #include #include<stdlib.h> int q[5],f=5,r=5; void main() { int ch,n,i; clrscr(); printf("1.enqueue\n2.dequeue\n3.display\n4.exit\n") ; while(1) { printf("\n\nenter your choice: "); scanf("%d",&ch); switch(ch) { case 1: printf("\nenqueue operation\n"); if(r<0) { printf("\n\nThe queue is full\n"); } else { printf("\nEnter the number: "); scanf("%d",&n); q[r--]=n;

} break; case 2: printf("\ndequeue operation\n"); if(f==r) { printf("\nqueue is empty"); } else { n=q[f--]; printf("\n%d is deleted from the queue\n",n); } break; case 3: printf("\n\ndisplay operation"); if(f==r) { printf("\n\nqueue is empty"); } else { printf("\n\nThe elements in the queue are:"); for(i=f;i!=r;i--) { printf("%d\t",q[i]); } break; case 4: exit(0);

default: printf("\nenter the correct option..."); break; } getch(); } } }

OUTPUT: 1.Enqueue 2.Dequeue 3.Display 4.Exit Enter your choice:1 Enqueue Operation Enter the number:52 Enter your choice:1 Enqueue Operation Enter the number:23 Enter your choice: 1 Enqueue Operation Enter the number:24 Enter your choice:3 52 23 24 Enter your choice:2 Dequeue Operation 52 is deleted from the list Enter your choice:3 23 24 Enter your choice:4

/* REVERSE STRING USING STACK ADT */ #include<stdio.h> #include #define STACK_SIZE 80 int push(char value); int pop(char *value); void revstring(char *str); int top=-1; char stack[STACK_SIZE]; void main() { char str[STACK_SIZE]; clrscr(); printf("Enter the string\n"); gets(str); reversestring(str); printf("\n the reversed string is %s",str); getch(); } void reversestring(char *str) { int i; push(NULL); for(i=0;str[i]!=NULL;i++) push(str[i]); while(!=pop(str++)); } int push(char value) {

extern char stack[]; extern int top; if(top==STACK_SIZE-1) return -1; stack[++top]=value; return 0; } int pop(char *value) { extern char stack[]; extern int top; if(top==-1) return -1; *value=stack[top--]; return 0; }

OUTPUT: Enter the string: REVERSE The reversed string is: ESREVER

/* TOWERS OF HANOI */ #include<stdio.h> #include void towers_of_hanoi(int n,char *a,char *c,char *r); void main() { int n; clrscr(); printf("\n Enter the number of disc: "); scanf("%d",&n); towers_of_hanoi(n,"Tower1","Tower2","Tower3"); getch(); } void towers_of_hanoi(int n,char *a,char *c,char *r) { if(n<=0) return; towers_of_hanoi(n-1,a,r,c); printf("\n\t Move disc %d from %s to %s",n,a,r); towers_of_hanoi(n-1,c,a,r); }

OUTPUT: Enter the number of discs: 3 Move disc 1 from tower 1 to tower 3 Move disc 2 from tower 1 to tower 2 Move disc 1 from tower 3 to tower 2 Move disc 3 from tower 1 to tower 3 Move disc 1 from tower 2 to tower 1 Move disc 2 from tower 2 to tower 3 Move disc 1 from tower 1 to tower 3

/* CHECKING BALANCED PARANTHESIS USING ARRAY IMPLEMENTATION OF STACK ADT */ #include<stdio.h> #include #define STACK_SIZE 80 int push(char value); int pop(char*value); void balpar(char*); int top=-1; char stack[STACK_SIZE]; int icount=0,rcount=0; void main() { char str[STACK_SIZE]; clrscr(); printf("Enter the string: "); gets(str); balpar(str); printf("%s",str); } void balpar(char*str) { int i; push('/0'); for(i=0;str[i]!=NULL;i++) push(str[i]); while(!pop(str++)); if(icount==rcount)

printf("The expression is balanced"); else printf("The expression is not balanced"); getch(); } int push(char value) { int ch; extern char stack[]; extern int top; if(top==STACK_SIZE-1) return-1; stack[++top]=value; return 0; } int pop(char*value) { extern char stack[]; extern int top; if(top==-1) return -1; *value=stack[top--]; if(*value=='c') { icount++; } if(*value=='i') { rcount++; }

return 0; } OUTPUT: Enter the string: (A+B)*C) The Expression is balanced. Enter the string: ((A+B)*C The Expression is not balanced.

/* INSERTION SORT */ #include<stdio.h> #include void insert(int a[],int n); int i,j,n,temp,a[25]; void main() { clrscr(); printf("Enter the limit: "); scanf("%d",&n); printf("\n Enter the elements: "); for(i=0;i
temp=a[i]; for(j=i;j>=1;j--) { if(temp
/* QUICK SORT */ #include<stdio.h rel="nofollow"> #include int i,j,n,pivot,a[20]; void quick(int a[],int left,int right); void swap(int a[],int i,int j); void main() { int i,n,a[20]; clrscr(); printf("Enter the limit"); scanf("%d",&n); printf("Enter the element to sort"); for(i=0;i
i=first; j=last; while(i<j) { while(a[j]<=pivot&&&i=pivot&&j>first) j--; if(i<j) swap(a,first,j); quick(a,first,j-1); quick(a,j+1,last); } } void swap(int a[],int i,int j) { int temp; temp=a[i]; a[i]=a[j]; a[j]=temp; }

OUTPUT: Enter the limit:5

Enter the elements to sort: 26 33 18 45 11 The sorted list : 11 18 26 33 45

/* SHELL SORT */ #include<stdio.h> #include void shell(int a[],int n); int i,j,n,k,temp,a[25]; void main() { clrscr(); printf("Enter the limit: "); scanf("%d",&n); printf("\nEnter the number: "); for(i=0;i=1;i=i/2) { for(j=i;j<=n-1;j++) {

temp=a[j]; k=j-i; while(k>=0 && temp<=a[k]) { a[k+i]=a[k]; k=k-i; } a[k+i]=temp; } } }

OUTPUT: Enter the limit: 5 Enter the number: 5 4 3 2 1 Before Sorting: 5

4 3 2 1 After Sorting: 1 2 3 4 5

* HEAP SORT */ #include<stdio.h> #include void main() { int r[50]; int n; clrscr(); printf("Enter the limit: "); scanf("%d",&n); readelement(r,n); getch(); } readelement(int r[50],int n) { printf("Enter the element: \n"); for(i=1;i<=n;i++) scanf("%d",&r[i]); } hsort(int r[10],int n) { int i,t; for(i=n/2;i>0;i++) adjust(r,i,n); for(i=n-1;i>0;i++) { t=r[i+1]; r[i+1]=r[i]; r[i]=t;

adjust(r,j,i); } printf("The sorted list is:"); for(i=1;i
3 4 5 6 7

/* BINARY SEARCH TREE */ #include<stdio.h> #include #include<malloc.h> struct tree { int info; struct tree *left,*right; }; struct tree *root; void insert(int item) { struct tree *temp; temp=root; if(root==NULL) { root=(struct tree*)malloc(sizeof(struct tree)); root->info=item; root->left=NULL; } else { while((temp->info>item)&&(temp->left!=NULL)) temp=temp->left; while((temp->inforight! =NULL)) temp=temp->right; if(temp->info>item)

{ temp->left=(struct tree*)malloc(sizeof(struct tree)); temp->left->info=item; temp->left->right=NULL; temp->left->left=NULL; } else { temp->right=(struct tree*)malloc(sizeof(struct tree)); temp->right->info=item; temp->left->right=NULL; temp->left->left=NULL; } } } void search(int item) { struct tree *temp; temp=root; while((temp->info>item)&&(temp->left!=NULL)) { temp=temp->left; if(temp->info==item) break; } while((temp->inforight!=NULL)) temp=temp->right; if(temp->info==item)

{ printf("\nsearch successfull"); } else { printf("\nunsuccessful search"); } } void inorder(struct tree *t) { if(t!=NULL) { inorder(t->left); printf("\n%d",t->info); inorder(t->right); } } void preorder(struct tree *t) { if(t!=NULL) { printf("\n%d",t->info); preorder(t->left); preorder(t->right); } } void postorder(struct tree *t) { if(t!=NULL) {

postorder(t->left); postorder(t->right); printf("\n%d",t->info); } } void main() { int ch,item; clrscr(); root=NULL; do { printf("\n1.CREATION"); printf("\n2.INORDER"); printf("\n3.PREORDER"); printf("\n4.POSTORDER"); printf("\n5.SEARCH"); printf("\n6.EXIT"); printf("\n enter your choice:"); scanf("%d",&ch); printf("%d",ch); switch(ch) { case 1: while(1) { printf("\nenter the limit(0-exit)"); scanf("%d",&item); printf("%d",item); if(item==0)

break; insert(item); } break; case 2: inorder(root); break; case 3: preorder(root); break; case 4: postorder(root); break; case 5: printf("enter the element to be searched"); scanf("%d",item); search(item); search(item); break; case 6: printf("\nend of the operation"); break; default: printf("enter only 1 to 5"); } } while(ch<6); getch(); }

Related Documents

Data Structure
June 2020 17
Data Structure
November 2019 33
Data Structure
June 2020 13
Data Structure
November 2019 32
Data Structure
November 2019 27
Data Structure
May 2020 10

More Documents from ""

Data Structure
June 2020 17
Didiyouknow.pptx
December 2019 42
Talambuhay Ni Pacquiao
December 2019 40
9 Facts About Bacteria.docx
December 2019 35
Didiyouknow.pptx
December 2019 34