PROGRAMS ON DATA STRUCTURE
Program : Program for finding the transpose of a martix in sparse form. /* Program for finding the transpose of a martix in sparse form*/ #include #include int a[100][100],b[100][100]; void main() { int i,m,n,p,q,col,t; clrscr(); printf("Enter the no. of rows"); scanf("%d", &a[0][0]); printf("\nEnter the no. of cols"); scanf("%d", &a[0][1]); printf("\nEnter the number of non zero terms"); scanf("%d", &a[0][2]); for(i=1;i<=a[0][2];i++) { printf("\nEnter the value (that is non zero)"); scanf("%d",&a[i][2]); printf("\nEnter the row for %d : ",a[i][2]); scanf("%d",&a[i][0]); printf("\nEnter the col for %d : ",a[i][2]); scanf("%d",&a[i][1]); } /* Printing for testing the sparse input */ printf("\n *****************************\n The martix you entered is \n ************************\n\n Row \t Col \t Value \t"); for ( i = 0;i <= a[0][2];i++) { printf("\n %d \t %d \t %d \t " , a[i][0],a[i][1],a[i][2]); } /* Calling function for evaluation of transpose */ m = a[0][0]; n = a[0][1]; t = a[0][2]; b[0][0] = n; b[0][1] = m; b[0][2] = t; q=1; for( col = 1; col <=n; col++) { for(p = 1; p<=t;p++)
{
}
}
if(a[p][1] == col) { b[q][0] = a[p][1]; b[q][1] =a[p][0]; b[q][2] = a[p][2]; q++; } //end of outer for loop
/* Printing the transposed matrix */ getch(); printf("\nThe Transpose of the above matrix is "); for ( i = 0;i <= a[0][2];i++) { printf("\n %d \t %d \t %d \t " , b[i][0],b[i][1],b[i][2]); } getch(); }
Program : Stack operations through array. /////////////////////////////////////////////////////////////////// // STACK IMPLEMENTATION THROUGH ARRAY // // PUSH . POP // ////////////////////////////////////////////////////////////////// #include #include # define MAXSIZE 200 int stack[MAXSIZE]; int top; //index pointing to the top of stack void main() { void push(int); int pop(); int will=1,i,num; clrscr(); printf("\n\t\tProgram for stack demonstration through array by Amit Mathur and Aditya Tiwari.\n\n\n"); while(will ==1) { printf("\n\t\tMAIN MENU: \n\t1.Add element to stack\n\t2.Delete element from the stack\n"); scanf("%d",&will); switch(will) { case 1:
printf("\nEnter the data... "); scanf("%d",&num); push(num); break; case 2: i=pop(); printf("\nValue returned from pop function is break; default: printf("Invalid Choice . "); }
%d ",i);
printf(" \n\n\t\t\tDo you want to do more operations on Stack ( 1 for yes, any other key to exit) "); scanf("%d" , &will); } //end of outer while } //end of main void push(int y) { if(top>MAXSIZE) { printf("\n\n\t\tSTACK FULL\n\n"); return; } else { top++; stack[top]=y; } } int pop() { int a; if(top<=0) { printf("\n\n\t\tSTACK EMPTY\n\n\t\t"); return 0; } else { a=stack[top]; top--; } return(a); }
Program : Stack implementation through linked list.
/////////////////////////////////////////////////////////////////////// //// // STACK AS LINKED LIST // // PUSH . POP . DISPLAY // /////////////////////////////////////////////////////////////////////// //// #include #include # include "malloc.h" struct node { int data; struct node *link; } ; struct node *top; void main() { void push(int); void display(); int wish, num,will,a; wish = 1; top = NULL; clrscr(); printf("Program for Stack as Linked List demo..\n"); while(wish == 1) { printf("\n\t\t\tMain Menu\n1.Enter data in stack \n2.Delete from stack\n"); scanf("%d",&will); switch(will) { case 1: printf("\nEnter the data"); scanf("%d",&num); push(num); display(); break; case 2: a=pop(); printf("\nValue returned from top of the stack is %d",a); break; default: printf("\nInvalid choice"); } printf("\nDo you want to continue, press 1"); scanf("%d",&wish); } } void push(int y)
{ struct node *x; x=malloc(sizeof(struct node)); printf("\n Address of newly created node x is %d",x); x->data = y; x->link = top; top = x; } void display() { int i =0; struct node * temp; temp = top; while(temp!=NULL) { printf("\nItem No. %d >data,temp->link); temp=temp->link; } }
:
Data %d
/// THIS FUNCTION REMOVES TOP NODE FROM VALUE///
Link %d ",i++,temp-
THE STACK AND RETURNS ITS
int pop() { int a; if(top==NULL) {printf("\n\t\tSTACK EMPTY...\n\n"); return 0;} else { a=top->data; printf("The value returned is %d ",a); free(top); top=top->link; return (a); } }
Program : Queue implementation through array. /////////////////////////////////////////////////////////////////// // QUEUE IMPLEMENTATION THROUGH ARRAY // // INSERT . DELETE // ///////////////////////////////////////////////////////////////// #include #include # define MAXSIZE 200 int q[MAXSIZE]; int front, rear; void main() { void add(int); int del(); int will=1,i,num;
front =0; rear = 0; clrscr(); printf("\n\t\tProgram for queue demonstration through array\n\n\n"); while(will ==1) { printf("\n\t\tMAIN MENU: \n\t1.Add element to queue\n\t2.Delete element from the queue\n"); scanf("%d",&will); switch(will) { case 1: printf("\nEnter the data... "); scanf("%d",&num); add(num); break; case 2: i=del(); printf("\nValue returned from delete function is break; default: printf("Invalid Choice ... "); }
%d ",i);
printf(" \n\n\t\t\tDo you want to do more operations on Queue ( 1 for yes, any other key to exit) "); scanf("%d" , &will); } //end of outer while } //end of main void add(int a) { if(rear>MAXSIZE) { printf("\n\n\t\tQUEUE FULL\n\n"); return; } else { q[rear]=a; rear++; printf("\n Value of rear = %d and the value of front is %d",rear,front); } } int del() { int a; if(front == rear) { printf("\n\n\t\tQUEUE EMPTY\n\n"); return(0); }
else
{ a=q[front]; front++; } return(a);
}
Program : Circular Queue implementation through array. /////////////////////////////////////////////////////////////////////// //// // CIRCULAR QUEUE IMPLEMENTATION THROUGH ARRAY // // INSERT . DELETE // //////////////////////////////////////////////////////////////////// #include #include # define MAXSIZE 200 int cq[MAXSIZE]; int front,rear; void main() { void add(int,int [],int,int,int); int del(int [],int ,int ,int ); int will=1,i,num; front = 1; rear = 1; clrscr(); printf("\n\t\tProgram for Circular Queue demonstration through array\n\n\n"); while(will ==1) { printf("\n\t\tMAIN MENU: \n\t1.Add element to Circular Queue\n\t2.Delete element from the Circular Queue\n"); scanf("%d",&will); switch(will) { case 1: printf("\nEnter the data... "); scanf("%d",&num); add(num,cq,MAXSIZE,front,rear); break; case 2: i=del(cq,MAXSIZE,front,rear); printf("\nValue returned from delete function is break; default: printf("\n\nInvalid Choice . "); }
%d ",i);
printf(" \n\n\t\t\tDo you want to do more operations on Circular Queue ( 1 for yes, any other key to exit) "); scanf("%d" , &will); } //end of outer while } //end of main void add(int item,int q[],int MAX,int front,int rear) { rear++; rear= (rear%MAX); if(front ==rear) { printf("\n\n\t\tCIRCULAR QUEUE FULL\n\n"); return; } else { cq[rear]=item; printf("\nRear = %d Front = %d ",rear,front); } } int del(int q[],int MAX,int front,int rear) { int a; if(front == rear) { printf("\n\n\t\tCIRCULAR STACK EMPTY\n\n"); return (0); } else { front++; front = front%MAX; a=cq[front]; return(a); printf("\nRear = %d Front = %d ",rear,front); } }
Program : Queue implementation through linked list. /////////////////////////////////////////////////////////////////// // QUEUE AS LINKED LIST // // ADDITION . DELETION // ////////////////////////////////////////////////////////////////// #include #include struct node { int data; struct node } ;
*link;
struct node *front, *rear; void main() { int wish,will,a,num; void add(int); wish=1; clrscr(); front=rear=NULL; printf("Program for Queue as Linked List demo..\n"); while(wish == 1) { printf("\n\t\t\tMain Menu\n1.Enter data in queue \n2.Delete from queue\n"); scanf("%d",&will); switch(will) { case 1: printf("\nEnter the data"); scanf("%d",&num); add(num); //display(); break; case 2: a=del(); printf("\nValue returned from front of the queue is %d",a); break; default: printf("\nInvalid choice"); } printf("\nDo you want to continue, press 1"); scanf("%d",&wish); } getch(); } void add(int y) { struct node *ptr; ptr=malloc(sizeof(struct node)); ptr->data=y; ptr->link=NULL; if(front ==NULL) { front = rear= ptr; } else { rear->link=ptr; rear=ptr; } }
int del() { int num; if(front==NULL) { printf("\n\n\t\tQUEUE EMPTY\n\n"); return(0); } else { num=front->data; front = front->link; printf("\n Value returned by delete function is %d \n",num); return(num); } }