쌓고 쌓다
스택 구현 (배열, 리스트) 본문
스택 (배열)
#include <stdio.h>
#define MAX_SIZE 5
int arr[5];
int top=-1;
void push(int x)
{
if (top + 1 == MAX_SIZE)
{
printf("빈자리 없음.\n");
return;
}
arr[++top] = x;
return;
}
int pop()
{
if (top == -1)
{
printf("비어있음.\n");
return -1;
}
return arr[top--];
}
int is_empty()
{
if (top == -1)
return 1;
else
return 0;
}
void Top()
{
if (top == -1)
{
printf("비어있음.\n");
return;
}
printf("%d\n", arr[top]);
return;
}
스택 (리스트)
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
Node* next;
};
Node* top=NULL;
Node* GetNewNode(int x)
{
Node* temp = (Node*)malloc(sizeof(Node));
temp->next = NULL;
temp->data = x;
return temp;
}
void push(int x)
{
if (top == NULL)
{
top = GetNewNode(x);
return;
}
Node* temp = GetNewNode(x);
temp->next = top;
top = temp;
return;
}
void pop()
{
if (top == NULL)
return;
Node* temp = top;
top = temp->next;
free(temp);
}
void Top()
{
if (top == NULL)
{
printf("비어있습니다.\n");
return;
}
printf("%d\n", top->data);
return;
}
void is_empty()
{
if (top == NULL)
printf("비어있습니다.\n");
else
printf("비어있지않습니다.\n");
}
'알고리즘 > 자료구조' 카테고리의 다른 글
더블 링크드 리스트 삽입 (0) | 2022.10.06 |
---|---|
싱글, 더블 링크드 리스트 출력(반복문, 재귀) (0) | 2022.10.06 |
싱글 링크드 리스트 뒤집기 (0) | 2022.10.04 |
싱글 링크드 리스트 삽입 3가지 방법 (0) | 2022.09.28 |
[자료구조] AVL 트리와 탐색 (0) | 2022.06.04 |
Comments