상세 컨텐츠

본문 제목

[Data_Struct] Stack 구현

개발생활/DataStructure

by 한국인맛집 2017. 5. 23. 17:28

본문

반응형

Stack [Linked_list 로 구현 하기]



Header.h


#include<cstdio>

#include<cstdlib>



struct Node {

int data;

Node* next = nullptr;

};

// list에서 필요한 노드 구조체 활용.



class Stack {

// Stack 은 기본적으로 Push , pop , isEmpty 로 구성 된다 

// 나는 Linked_list 를 이용하여 stack 을 구현했기때문에 isFull 동작은 할수없다고 판단하여 미구현.

// top 는 스택에서 현재 위치를 나타낸다.

// push 는 값을 입력할때마다 top 의 위치를 증가시킨다

// Stackt 은 FILO 다. First In Last Out 


private:

int top = -1;

Node* first = new Node();

Node* getNode(int index) {

Node* node = first;

for (int i = 0; i <= index; i++) {

node = node->next;

}

return node;

}


public:

// push 데이터값을 입력하는 동작

// push 를 할때 top의 값은 증가한다.

Node* push(int data) {

Node* node = new Node();

node->data = data;

Node* prev = getNode(top);

Node* curr = prev->next;


node->next = curr;

prev->next = node;


top++;

return node;


}

int pop() {

// pop 동작시 값을 가져온다.

// top의 값은 감소 한다.

if (top < 0) {

return isEmpty();

}


else {

Node* prev = getNode(top - 1);

Node* del = prev->next;

Node* next = del->next;


int popData = del->data;

prev->next = next;

top--;

return popData;

}

}

bool isEmpty() {

// top의 위치로 값을 판단하며 top의 값이 0보다 작다면 스택은 비어있음을 뜻한다.

// 조건에 충족하면 stack is Empty 를 출력 아니면 동작하지않는다.

if (top == -1) {

printf("Stack is Empty!\n");

return true;

}

else {

return false;

}

}

~Stack() {

int listTop = top;


}




};



Source.cpp



#include"Header.h"


int main() {

int stackData;


Stack* stack1 = new Stack;

stack1->push(10);

stackData=stack1->pop();

printf("[%d] ", stackData);

stackData = stack1->pop();





fgetc(stdin);

return 0;

}


Stack 을 클래스로 구현 진행하였다.


클래스 공부를 진행하면서 생성사 소멸자 개념이 생소하다.


연습을하며 더 실력 을 키워야할것이다.

반응형

'개발생활 > DataStructure' 카테고리의 다른 글

자료구조 기초  (0) 2017.12.06
Binary Search Tree 구현. 자료구조 공부  (31) 2017.06.08
Class 사용 Queue 구현  (0) 2017.05.25
Insertion_sort_ 구현  (0) 2017.05.25
Linked_list [data_struct]  (31) 2017.05.22

관련글 더보기