숫자 저장 스택
#include <stdio.h>
#define MAX 10
int stack[MAX];
int top;
void init_stack(void)
{
top = -1;
}
int push(int t)
{
if (top >= MAX-1)
{
printf("\n Stack overflow.");
return -1;
}
stack[++top] = t;
return t;
}
int pop(void)
{
if(top < 0)
{
printf("\n Stack underflow.");
return -1;
}
return stack[top--];
}
void print_stack(void)
{
int i;
printf("\n Stack contents : Top -----> Bottom\n");
for(i=top; i>=0; i--)
printf("%-6d", stack[i]);
}
void main(void)
{
int i;
init_stack();
printf("\nPush 5, 4, 7, 8, 2, 1");
push(5);
push(4);
push(7);
push(8);
push(2);
push(1);
print_stack();
printf("\n\nPop");
i=pop();
print_stack();
printf("\nPopping value id %d", i);
printf("\n\nPush 3, 2, 5, 7, 2");
push(3);
push(2);
push(5);
push(7);
push(2);
print_stack();
printf("\n\nNow stack is full, push 3");
push(3);
print_stack();
printf("\n\nInitialize stack");
init_stack();
print_stack();
printf("\n\nNow stack is empty, pop");
i = pop();
print_stack();
printf("\n\nPopping value is %d\n", i);
}
문자열 저장 스택
#include <stdio.h>
#include <string.h>
#define MAX 10
char stack[MAX][80];
int top;
void init_stack(void)
{
top = -1;
}
char *push(char *t)
{
if (top >= MAX-1)
{
printf("\n Stack overflow.");
return 0;
}
strcpy(stack[++top], t);
return t;
}
char *pop(void)
{
return stack[top--];
}
void print_stack(void)
{
int i;
printf("\n Stack contents : Top -----> Bottom\n");
for(i=top; i>=0; i--)
printf("%-10s", stack[i]);
}
void main(void)
{
char str[80];
init_stack();
printf("\nPush hello5, hello4, hello7, hello8, hello2, hello1");
push("hello5");
push("hello4");
push("hello7");
push("hello8");
push("hello2");
push("hello1");
print_stack();
printf("\n\nPop");
if(top < 0)
{
printf("\n Stack underflow.");
return ;
}
else
strcpy(str, pop());
print_stack();
printf("\nPopping value id %s", str);
printf("\n\nPush hello3, hello2, hello5, hello7, hello2");
push("hello3");
push("hello2");
push("hello5");
push("hello7");
push("hello2");
print_stack();
printf("\n\nNow stack is full, push hello3");
push("hello3");
print_stack();
printf("\n\nInitialize stack");
init_stack();
print_stack();
printf("\n\nNow stack is empty, pop");
if(top < 0)
{
printf("\n Stack underflow.\n");
return ;
}
else
strcpy(str, pop());
print_stack();
printf("\n\nPopping value is %d\n", str);
}
'프로그래머의 길 > 알고리즘' 카테고리의 다른 글
후위식 계산기 (0) | 2007.03.30 |
---|---|
원형 큐 구현 소스 (0) | 2007.03.29 |
스택과 큐, 데크 (0) | 2007.03.29 |
이중 연결 리스트로 구현한 텍스트 뷰어 (2) | 2007.03.28 |
이중 연결 리스트 (0) | 2007.03.28 |