U E D R , A S I H C RSS

Data Structure/Stack



1. Stack


  • μŠ€νƒ(Stack) : λ‚˜μ€‘μ— λ“€μ–΄μ˜¨κ²Œ λ¨Όμ € λ‚˜κ°. 밑은 λ§‰ν˜€ 있고 μœ„λ§Œ 뚫렀 μžˆλŠ” 톡이라고 μƒκ°ν•˜λ©΄ 됨. 밑을 도렀내고 κΊΌλ‚Όμˆ˜λŠ” μ—†λŠ” λ…Έλ¦‡μ΄λ‹ˆ μ§‘μ–΄λ„£μ„λ•Œλ„ μœ„λ‘œ, λΊ„λ•Œλ„ μœ„λ‘œ λΉΌμ•Όκ² μ Έ?^^;;
  • top ν¬μΈν„°λŠ” 맨 λ‚˜μ€‘μ— 집어 넣은 λ…Έλ“œλΌ κ°€λ₯΄ν‚΄.
  • λ”°λΌμ„œ 데이터가 μΆ”κ°€λ˜κ±°λ‚˜ μ‚­μ œλ λ•Œλ§ˆλ‹€ top포인터가 λ³€ν•˜κ² μ£ ?^^;;

1.1. λ°°μ—΄λ‘œ μ§  μŠ€νƒ

~cpp 
class Stack
{
	enum {Size=100};
private:
	int data[Size];
	int top;
	bool IsEmpty();
	bool IsFull();
public:
	Stack() { top=-1; }
	bool Push(int ndata);
	bool Pop();
	void Show();
	~Stack() {}
};

bool Stack::IsEmpty()
{
	if(top==-1)
		return true;
	return false;
}

bool Stack::IsFull()
{
	if(top==Size-1)
		return true;
	return false;
}

bool Stack::Push(int ndata)
{
	if(!IsFull())
	{
		data[++top]=ndata;
		return true;
	}
	else
	{
		cout<<"꽉 μ°Όλ‹€";
		return false;
	}
}

bool Stack::Pop()
{
	if(!IsEmpty())
	{
		top--;
		return true;
	}
	else
	{
		cout<<"λΉ„μ—ˆλ‹€";
		return false;
	}
}

void Show()
{
	int temp=top;
	while(temp!=-1)
		cout<<data[temp--];
}

1.2. Linked List둜 λ§Œλ“  Stack

~cpp 
class Stack
{
private:
	struct Node
	{
		int m_nData;
		Node* m_pPrev;
	};
	Node* Head;		// 아무것도 μ—†λŠ” ν—€λ“œ λ…Έλ“œ ν•˜λ‚˜ 생성(μš”κ²Œ 있으면 μ—„μ²­ νŽΈν•¨!)
	Node* top;
	bool IsEmpty();
public:
	Stack();
	void Push(int x);
	void Pop();
	void Show();
	~Stack();
};

Stack::Stack()
{
	Head=new Node;
	Head->m_pPrev=NULL;
	top=Head;
}

void Stack::Push(int x)
{
	Node* temp=new Node;
	temp->m_nData=x;
	temp->m_pPrev=top;
	top=temp;
}

bool Stack::Pop()
{
	if(!IsEmpty())
	{
		Node* temp=top->m_pPrev;
		delete top;
		top=temp;
		return true;
	}
	else
         {
                  cout<<"λΉ„μ—ˆλ‹€";
		return false;
         }
}

void Stack::Show() 
{
	Node* temp=top;
	while(!IsEmpty())
	{
		cout<<top->m_nData<<endl;
		top=top->m_pPrev;
	}
	top=temp;
}

bool Stack::IsEmpty() 
{
	if(top==Head)
		return true;
	return false;
}

Stack::~Stack()
{
	while(!IsEmpty())
	{
		Pop();
	}
	delete Head;
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:05
Processing time 0.0203 sec