实现一个简单的栈

#include<iostream>
using namespace std;

struct Node{
	int data;
	Node *next;
	Node(int data, Node* next): data(data), next(next){}
};

class Stack{
private:
	Node *head;
	int count;
public:
	Stack(): head(NULL), count(0){}
	void Push(int to_push);
	int Pop();	
};

void Stack::Push(int to_push){
	Node *new_node = new Node(to_push, head);
	head = new_node;
	++count;	
}

int Stack::Pop(){
	if(count == 0){
		cerr<<"No Element to Pop"<<endl;	
		return -1;
	}
	Node *to_pop = head;
	head = to_pop->next;
	int ret = to_pop->data;
	delete to_pop;	
	--count;
	return ret;
}

int main()
{
	Stack my_stack;
	for(int i=0; i<10; ++i){
		my_stack.Push(i);
	}
	for(int i=0; i<10; ++i){
		cout<<my_stack.Pop()<<endl;
	}
	my_stack.Pop();
	return 0;
}

注意思考,建立栈的形象思维:栈就是先进后出,弹出的总是最后一个进来的元素。

因此只需要记住每次改变后的head就可以,它是被弹出的。

posted @ 2011-01-27 14:56  霞光照耀  阅读(310)  评论(0编辑  收藏  举报