データ構造----チェーンスタック

2033 ワード

次のコードは、一方向チェーンを利用して、データ構造スタックを実現します.スタックの基本的な操作方法はそれぞれ実現されている.
1:スタック  void push()
2:   倉庫から出す  ブックpop()
3:   スタックトップ要素ブックtop(int*value)を入手しました.
4:   スタックが空のbook eptyかどうかを判断する()
5:   スタックのサイズint size()を得る
6:  出力スタック内要素void output()
 
#include "Stack.h"


//      ,     ,        
CStack::CStack(void)
{
	m_value = 0xFFFFFFFF;
	m_pnext = NULL;
}


CStack::~CStack(void)
{
	printf("delete %d
", m_value); } void CStack::destroy() { CStack *pnode = this; while(m_pnext != NULL) { CStack *ptemp = m_pnext; m_pnext = m_pnext->m_pnext; delete ptemp; } } void CStack::push(int value) { CStack *newnode = new CStack; newnode->m_value = value; newnode->m_pnext = this->m_pnext; this->m_pnext = newnode; m_value++; } bool CStack::pop() { if (m_pnext == NULL) { return false; } else { m_pnext = m_pnext->m_pnext; } m_value--; return true; } bool CStack::top(int *value) { if (m_pnext != NULL) { *value = m_pnext->m_value; return true; } *value = 0xFFFFFFFF; return false; } int CStack::size() { CStack *pnode = this; int count = 0; while(pnode->m_pnext != NULL) { count++; pnode = pnode->m_pnext; } return count; } bool CStack::empty() { if (m_pnext == NULL) { return true; } return false; } void CStack::output() { CStack *pnode = this; int count = 0; while(pnode->m_pnext != NULL) { printf("index=%d value=%d
", count, pnode->m_pnext->m_value); pnode = pnode->m_pnext; } }