written by yechoi

연결리스트를 이용한 스택 구현(push, pop 함수) 본문

Born 2 Code/Data Structure

연결리스트를 이용한 스택 구현(push, pop 함수)

yechoi 2020. 10. 12. 15:42
반응형

스택

  • 한쪽으로 들어가서 한쪽으로 나오는 자료구조​
  • push: 자료를 넣음
  • pop: 자료를 뺌

스택의 구현

  • 배열 또는 연결리스트로 구현할 수 있음

  • 기본적인 형태로 구현 난이도는 낮은 편


연결리스트를 이용한 스택 구현


typedef struct {
  int data;
  struct Node *next;
} Node;
​
typedef struct {
  Node *top;
} Stack;
​
void    push(Stack *stack, int data)
{
  Node *node = (Node *)malloc(sizeof(Node));
  node->data = data;
​
  node->next = stack->top;
  stack->top = node;
}
​
int        pop(Stack *stack)
{
  if (stack->top = NULL)
  {
      printf("stack underflow!\n");
      return (-1); 
  }

  Node *node = stack->top;
  int data = node->data;
​
  stack->top = node->next;
  free(node);
  return (data);
}
​
void    show(Stack *stack)
{
  Node *cur = stack->top;
  while (cur != NULL)
  {
      printf("%d\n", cur->data);
      cur = cur->next;
  }
}
​
int main(void)
{
  Stack s;
​
  s.top = NULL; // important!
  push(&s, 7);
  push(&s, 5);
  pop(&s);
}
​
반응형