-
리스트 스택(Stack)@ 16. 1 ~ 17. 1/자료구조 2013. 4. 7. 21:25
리스트를 이용한 스택 구현
항상 TopStack을 가르키는 포인터를 지정함으로써 스택처럼 구현..
Push, Pop, Show 만 구현한 까닭에 일부 메모리 누수있음..?!
StackNode.cpp
#include"StackNode.h" int StackNode::GetData() { return data; } void StackNode::InputData(int num) { data=num; }
StackNode.h
#ifndef __STACKNODE_H__ #define __STACKNODE_H__ #include<iostream> using namespace std; class StackNode { private: int data; public: StackNode* plink; public: StackNode() { data=0; } int GetData(); void InputData(int num); }; #endif
StackList.cpp
#include<iostream> #include"StackList.h" StackList::StackList() { CurrentCount=0; TopNode=new StackNode; TopNode->plink=NULL; } StackList::~StackList() { delete TopNode; } void StackList::PushStack(StackNode node) { StackNode* NewNode=new StackNode; *NewNode=node; NewNode->plink=TopNode; TopNode=NewNode; CurrentCount++; } void StackList::PopStack() { cout << "Pop 실행" << endl; StackNode* temp; temp=TopNode; TopNode=temp->plink; temp->plink=NULL; delete temp; temp=NULL; CurrentCount--; if(temp==NULL) { cout << "팝 메모리 삭제" << endl; } else cout << "팝 메모리 오류" << endl; } void StackList::PeekStack() { } void StackList::ShowAllStack() { StackNode* ShowNode; ShowNode=TopNode; for(int i=CurrentCount-1;i>=0;i--) { cout << i << "번째" << ShowNode->GetData() << endl; ShowNode=ShowNode->plink; } cout << "모든 데이터 출력완료" << endl; }
StackList.h
#ifndef __STACKLIST_H__ #define __STACKLIST_H__ #include<iostream> #include"StackNode.h" using namespace std; class StackList { public: int CurrentCount; StackNode* TopNode; public: StackList(); ~StackList(); void PushStack(StackNode node); void PopStack(); void PeekStack(); void ShowAllStack(); }; #endif
main.cpp
#include<iostream> #include<conio.h> #include"StackList.h" #include"StackNode.h" using namespace std; int main() { StackList list; StackNode a, b, c; a.InputData(1); b.InputData(2); c.InputData(3); cout << "Push 실행" << endl; list.PushStack(a); list.PushStack(b); list.PushStack(c); cout << "a(1), b(2), c(3) 순으로 Push 실시, c(3)이 가장 Top에 위치"<<endl; cout << endl; list.ShowAllStack(); list.PopStack(); cout << endl; list.ShowAllStack(); getch(); return 0; }
아직도 책이 두껍다..
'@ 16. 1 ~ 17. 1 > 자료구조' 카테고리의 다른 글
배열 선형 큐 (0) 2013.04.15 리스트 스택을 이용한 미로찾기(구상) (0) 2013.04.08 스택(Stack) (0) 2013.04.05 이중 링크드 리스트 구현 (0) 2013.03.31 아....링크드 리스트(단일) (0) 2013.02.05