Skip to main content

Entering elements into the stack from user and transfering into two stack with equal height.

Solution:
#include<stdio.h>
#include<conio.h>
#define maxsize 50
struct stack
{
 int stk[maxsize];
 int top;
};
typedef struct stack STACK;
STACK s1,s2;
int i,n;
int mid;
void array();
void push1();
void push2();
void traverse1();
void traverse2();
void main()
{
 s1.top=-1;
 s2.top=-1;
 clrscr();

     array();
     push1();
     push2();
     traverse1();
     traverse2();

}
void array()
{
int arr[50];
  printf("\n enter the no of array ele to be stored ::");
  scanf("%d",&n);
  mid=n/2;
  printf("\n enter the array elements ::\n");
 for(i=0;i<n;i++)
 {
    printf("\n enter arr[%d] ::\t",i);
    scanf("%d",&arr[i]);
 }

}
void push1()
{
   int arr[50];
   if(s1.top== (maxsize-1))
   {
    printf("\n stack is full ");
   }
   else
   {
    for(i=0;i<mid;i++)
   {
       s1.top=s1.top+1;
       s1.stk[s1.top]=arr[i];
   }
   }
}
void push2()
{  int arr[50];
   if(s2.top== (maxsize-1))
   {
    printf("\n stack is full ");
   }
   else
   {
    for(i=mid;i<n;i++)
    {
       s2.top=s2.top+1;
       s2.stk[s2.top] =arr[i];
    }
   }
}

void traverse1()
{
 int i;
 if(s1.top==-1)
  {
   printf("\n nothing to display , stack is empty ::");
  }
 else
  {
   printf("\n");
   printf("\n stack 1 :");
   for(i=s1.top;i>=0;i--)
    {
    printf("\n %d",s1.stk[i]);
    }
  }
}
void traverse2()
{
  if(s2.top==-1)
  {
   printf("\n nothing to display , stack is empty ::");
  }
 else
  {
   printf("\n");
   printf("\n stack 2 :");
   for(i=s2.top;i>=0;i--)
    {
    printf("\n %d",s2.stk[i]);
    }
  }

}

Comments

Popular posts from this blog

2D transformation for reflection in C program (Computer Graphics).

Program: #include<stdio.h> #include<conio.h> #include<graphics.h> #include<stdlib.h> void refx(int x1,int x2,int x3,int y1,int y2,int y3){ line(320,0,320,430); line(0,240,640,240); x1=(320-x1)+320; x2=(320-x2)+320; x3=(320-x3)+320; line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x1,y1); } void refy(int x1,int x2,int x3,int y1,int y2,int y3){ line(320,0,320,430); line(0,240,640,240); y1=(240-y1)+240; y2=(240-y2)+240; y3=(240-y3)+240; line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x1,y1); } void main() { int gd=DETECT,gm; int x1,y1,x2,y2,x3,y3; clrscr(); initgraph(&gd,&gm,"c://turboc3//bgi"); line(320,0,320,430); line(0,240,640,240); x1=150;y1=100; x2=220;y2=220; x3=220;y3=110; line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x1,y1); getch(); refx(x1,x2,x3,y1,y2,y3); getch(); refy(x1,x2,x3,y1,y2,y3); getch(); closegraph(); }

Write a c program for Merge short.

Solution: #include <stdio.h> #include<conio.h> #define max 10 int a[11] = { 10, 14, 19, 26, 27, 31, 33, 35, 42, 44, 0 }; int b[11]; void merging(int low, int mid, int high) {    int l1, l2, i;    l1 = low;    l2 = mid + 1;    for(i = low; l1 <= mid && l2 <= high; i++) {       if(a[l1] <= a[l2])       { b[i] = a[l1]; l1++;       }       else          b[i] = a[l2++];    }        while(l1 <= mid)           b[i++] = a[l1++];    while(l2 <= high)          b[i++] = a[l2++];    for(i = low; i <= high; i++)       a[i] = b[i]; } void sort(int low, int high) {    int mid;        if(low < high) {       mid = (low + high) / 2;       sort(low, mid);       sort(mid+1, high);       merging(low, mid, high);    } else {        return;    }    } int main() {     int i;    printf("List before sorting\n");        for(i = 0; i <= max; i++)       printf("%d ", a[i]);    sort(0, max);