Stack Overview
In computer science, a stack is a particular kind of abstract data type or collection in which the principal (or only) operations on the collection are the addition of an entity to the collection, known as push and removal of an entity, known as pop.[1] The relation between the push and pop operations is such that the stack is a Last-In-First-Out (LIFO) data structure. In a LIFO data structure, the last element added to the structure must be the first one to be removed. This is equivalent to the requirement that, considered as a linear data structure, or more abstractly a sequential collection, the push and pop operations occur only at one end of the structure, referred to as the top of the stack. Often a peek or top operation is also implemented, returning the value of the top element without removing it.
Stack Function signatures
init: -> Stack
push: N x Stack -> Stack
top: Stack -> (N U ERROR)
pop: Stack -> Stack
isempty: Stack -> Boolean
Example Simple Stack Program In C
#include<stdio.h>
#include<stdlib.h>#define SIZE 50void push(int i);
int pop(void);
int *tos, *p1, stack[SIZE];
int main(void)
{
int value;tos = stack; /* tos points to the top of stack */
p1 = stack; /* initialize p1 */do {
printf("Enter value: ");
scanf("%d", &value);if(value != 0)
push(value);
else
printf("value on top is %d\n", pop());
} while(value != -1);return 0;}
void push(int i)
{
p1++;
if(p1 == (tos+SIZE)) {
printf("Stack Overflow.\n");
exit(1);
}
*p1 = i;
}int pop(void)
{
if(p1 == tos) {
printf("Stack Underflow.\n");
exit(1);
}
p1--;
return *(p1+1);
}
No comments:
Post a Comment