SAVITIBAI PHULE UNIVERSITY OF PUNE
S. Y. B.Sc. (Computer Science) Semester III
Practical Examination
SUBJECT: CS-233 Practical course based on CS231
/* Q. 2. Write a program that copies the contents of one stack into another. Use stack library to perform basic stack operations. The order of two stacks must be identical. (Hint: Use a temporary stack to preserve the order). */
/// File name : "stack.c"
#include"stack.h"
int init(struct Stack *s)
{
s->top = -1;
}
int isEmpty(struct Stack *s)
{
if(s->top == -1)
{
return 1;
}
else{
return 0;
}
}
int isFull(struct Stack *s)
{
if(s->top == MAX-1)
{
return 1;
}
else{
return 0;
}
}
int Push(struct Stack *s, int n)
{
if(isFull(s) == 1)
{
printf("The stack is overflow...");
return 1;
}
else{
s->top++;
s->data[s->top] = n;
}
return 0;
}
int Pop(struct Stack *s)
{
if(isEmpty(s) == 1)
{
printf("The stack is underflow...");
return 1;
}
else{
return s->data[(s->top)--];
}
}
int Peek(struct Stack *s)
{
if(isEmpty(s) == 1)
{
printf("The stack is underflow...");
return 1;
}
else{
return s->data[s->top];
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// File name : "stack.h"
#include<stdio.h>
#include<stdlib.h>
#define MAX 30
struct Stack
{
int data[MAX];
int top;
};
int init(struct Stack *s);
int isEmpty(struct Stack *s);
int isFull(struct Stack *s);
int Push(struct Stack *s, int n);
int Pop(struct Stack *s);
int Peek(struct Stack *s);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// File name : "main.c"
#include"stack.h"
int main(int argc, char *argv[])
{
struct Stack s, s1, s2;
int A[MAX], n = 0, i = 0, num = 0;
init(&s);
printf("How many number we have to enter : ");
scanf("%d", &n);
printf("Enter the stack elements: ");
for (i = 0; i < n; i++)
{
scanf("%d", &num);
Push(&s, num);
}
for (i = 0; i < n; i++)
{
A[i] = Pop(&s);
}
init(&s1);
for (i = 0; i < n; i++)
{
Push(&s1, A[i]);
}
for (i = 0; i < n; i++)
{
A[i] = Pop(&s1);
}
init(&s2);
for (i = 0; i < n; i++)
{
Push(&s2, A[i]);
}
for (i = 0; i < n; i++)
{
printf("%d\t", Pop(&s2));
}
system("PAUSE");
return 0;
}
No comments:
Post a Comment