쌓고 쌓다

스택 구현 (배열, 리스트) 본문

알고리즘/자료구조

스택 구현 (배열, 리스트)

승민아 2022. 10. 20. 14:28

스택 (배열)

#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");
}
Comments