본문 바로가기
NOTE/Algorithm

자료구조) linked_stack

by DevAthena 2015. 8. 25.
#include <stdio.h>
#include <stdlib.h>
 
typedef struct _node
{
    int data;
    struct _node *link;
}_node;
 
typedef struct _stack
{
    _node *top;
}_stack;
 
void init(_stack *s)
{
    s->top = NULL;
}
 
int is_empty(_stack *s)
{
    return (s->top == NULL);
}
 
void push(_stack *s, int data)
{
    _node *temp;
    temp = (_node *)malloc(sizeof(_node));
    temp->data = data;
    temp->link = s->top;
    s->top = temp;
}
 
int pop(_stack *s)
{
    int item;
 
    if (is_empty(s))
    {
        printf("empty stack!\n");
        return -1;
    }
    else
    {
        _node *temp;
        temp = s->top;
        item = temp->data;
        s->top = s->top->link;
        free(temp);
        return item;
    }
}
 
int peek(_stack *s)
{
    if (!is_empty(s))
        return s->top->data;
}
 
void main()
{
    int i;
 
    _stack s;
 
    init(&s);
    
    for (i = 1; i <= 5; i++)
        push(&s, i);
 
    printf("pop = %d\n",pop(&s));
    printf("peek = %d\n", peek(&s));
    printf("pop = %d\n", pop(&s));
 
}
cs


'NOTE > Algorithm' 카테고리의 다른 글

자료구조) Graph  (0) 2015.08.25
자료구조) QuickSort  (0) 2015.08.25
자료구조) linked_queue  (0) 2015.08.25
dovelet) maze 최단 거리 미로  (0) 2015.08.25
uva_10074) Take the Land  (0) 2015.08.21