<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=DataStructure%2FStack</id>
	<title>DataStructure/Stack - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=DataStructure%2FStack"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=DataStructure/Stack&amp;action=history"/>
	<updated>2026-05-16T00:55:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=DataStructure/Stack&amp;diff=31157&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=DataStructure/Stack&amp;diff=31157&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Stack =&lt;br /&gt;
&lt;br /&gt;
* 스택(Stack) : 나중에 들어온게 먼저 나감. 밑은 막혀 있고 위만 뚫려 있는 통이라고 생각하면 됨. 밑을 도려내고 꺼낼수는 없는 노릇이니 집어넣을때도 위로, 뺄때도 위로 빼야겠져?^^;;&lt;br /&gt;
* top 포인터는 맨 나중에 집어 넣은 노드를 가르킴.&lt;br /&gt;
* 따라서 데이터가 추가되거나 삭제될때마다 top포인터가 변하겠죠?^^;;&lt;br /&gt;
== 배열로 짠 스택 ==&lt;br /&gt;
 class Stack&lt;br /&gt;
 {&lt;br /&gt;
 	enum {Size=100};&lt;br /&gt;
 private:&lt;br /&gt;
 	int data[Size];&lt;br /&gt;
 	int top;&lt;br /&gt;
 	bool IsEmpty();&lt;br /&gt;
 	bool IsFull();&lt;br /&gt;
 public:&lt;br /&gt;
 	Stack() { top=-1; }&lt;br /&gt;
 	bool Push(int ndata);&lt;br /&gt;
 	bool Pop();&lt;br /&gt;
 	void Show();&lt;br /&gt;
 	~Stack() {}&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 bool Stack::IsEmpty()&lt;br /&gt;
 {&lt;br /&gt;
 	if(top==-1)&lt;br /&gt;
 		return true;&lt;br /&gt;
 	return false;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool Stack::IsFull()&lt;br /&gt;
 {&lt;br /&gt;
 	if(top==Size-1)&lt;br /&gt;
 		return true;&lt;br /&gt;
 	return false;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool Stack::Push(int ndata)&lt;br /&gt;
 {&lt;br /&gt;
 	if(!IsFull())&lt;br /&gt;
 	{&lt;br /&gt;
 		data[++top]=ndata;&lt;br /&gt;
 		return true;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;꽉 찼다&amp;quot;;&lt;br /&gt;
 		return false;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool Stack::Pop()&lt;br /&gt;
 {&lt;br /&gt;
 	if(!IsEmpty())&lt;br /&gt;
 	{&lt;br /&gt;
 		top--;&lt;br /&gt;
 		return true;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;비었다&amp;quot;;&lt;br /&gt;
 		return false;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void Show()&lt;br /&gt;
 {&lt;br /&gt;
 	int temp=top;&lt;br /&gt;
 	while(temp!=-1)&lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;data[temp--];&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Linked List로 만든 Stack ==&lt;br /&gt;
 class Stack&lt;br /&gt;
 {&lt;br /&gt;
 private:&lt;br /&gt;
 	struct Node&lt;br /&gt;
 	{&lt;br /&gt;
 		int m_nData;&lt;br /&gt;
 		Node* m_pPrev;&lt;br /&gt;
 	};&lt;br /&gt;
 	Node* Head;		// 아무것도 없는 헤드 노드 하나 생성(요게 있으면 엄청 편함!)&lt;br /&gt;
 	Node* top;&lt;br /&gt;
 	bool IsEmpty();&lt;br /&gt;
 public:&lt;br /&gt;
 	Stack();&lt;br /&gt;
 	void Push(int x);&lt;br /&gt;
 	void Pop();&lt;br /&gt;
 	void Show();&lt;br /&gt;
 	~Stack();&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 Stack::Stack()&lt;br /&gt;
 {&lt;br /&gt;
 	Head=new Node;&lt;br /&gt;
 	Head-&amp;amp;gt;m_pPrev=NULL;&lt;br /&gt;
 	top=Head;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void Stack::Push(int x)&lt;br /&gt;
 {&lt;br /&gt;
 	Node* temp=new Node;&lt;br /&gt;
 	temp-&amp;amp;gt;m_nData=x;&lt;br /&gt;
 	temp-&amp;amp;gt;m_pPrev=top;&lt;br /&gt;
 	top=temp;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool Stack::Pop()&lt;br /&gt;
 {&lt;br /&gt;
 	if(!IsEmpty())&lt;br /&gt;
 	{&lt;br /&gt;
 		Node* temp=top-&amp;amp;gt;m_pPrev;&lt;br /&gt;
 		delete top;&lt;br /&gt;
 		top=temp;&lt;br /&gt;
 		return true;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
          {&lt;br /&gt;
                   cout&amp;amp;lt;&amp;amp;lt;&amp;quot;비었다&amp;quot;;&lt;br /&gt;
 		return false;&lt;br /&gt;
          }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void Stack::Show() &lt;br /&gt;
 {&lt;br /&gt;
 	Node* temp=top;&lt;br /&gt;
 	while(!IsEmpty())&lt;br /&gt;
 	{&lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;top-&amp;amp;gt;m_nData&amp;amp;lt;&amp;amp;lt;endl;&lt;br /&gt;
 		top=top-&amp;amp;gt;m_pPrev;&lt;br /&gt;
 	}&lt;br /&gt;
 	top=temp;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool Stack::IsEmpty() &lt;br /&gt;
 {&lt;br /&gt;
 	if(top==Head)&lt;br /&gt;
 		return true;&lt;br /&gt;
 	return false;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 Stack::~Stack()&lt;br /&gt;
 {&lt;br /&gt;
 	while(!IsEmpty())&lt;br /&gt;
 	{&lt;br /&gt;
 		Pop();&lt;br /&gt;
 	}&lt;br /&gt;
 	delete Head;&lt;br /&gt;
 }&lt;br /&gt;
----&lt;br /&gt;
[[DataStructure]], StackAndQueue&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>