用C++实现链栈

class Node
{
public:
	Node():m_next(NULL){}
	Node(int v = 0) :m_value(v), m_next(NULL) {}
	Node* m_next;
	int m_value;
};
class Stack
{
public:
	Stack():m_stack(NULL),m_size(0){}
	void Push(int val)//入栈
	{
		Node* p = new Node(val);
		if (m_stack == NULL)
			m_stack = p;	
		else
		{
			p->m_next = m_stack;
			m_stack= p;
		}
		m_size++;
	}
	bool IsEmpty()
	{
		return m_stack == NULL;
	}
	void GetTop()
	{
		if (m_stack == NULL)
			return;
		else
			cout << m_stack->m_value <<endl;
	}
	Node* Search(int val)//栈中查找元素
	{
		Node* p = m_stack;
		if (p == NULL)
			return NULL;
		else
		{
			while (p && p->m_value != val)
			{
				p = p->m_next;
			}
			return p;
		}
	}
	void Pop()//出栈,并返回新栈顶
	{
		if (m_stack == NULL)
			return;
		else
		{
			Node* p = m_stack;
			m_stack = p->m_next;
			delete p;
			p = NULL;
			m_size--;
			cout << m_stack->m_value << endl;
		}
	}
private:
	Node* m_stack;//栈头
	int m_size;//有效元素个数
};
void main()
{
	Stack ps;
	ps.Push(1);
	ps.Push(2);
	ps.Push(3);
	//ps.GetTop();
	ps.Pop();
	ps.Search(2);
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Better Sally

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值