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);
}
用C++实现链栈
最新推荐文章于 2024-07-25 12:39:48 发布