본문 바로가기
프로그래머의 길/알고리즘

스택 예제 소스

by 제이콥케이 2007. 3. 29.
반응형

숫자 저장 스택

#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