堆栈链表储存
//堆栈,链表实现
#include<iostream>
using namespace std;
class stack
{
public:
	int data;
	stack*next;          
};
stack*Linkstack()
{
	stack*s = new stack;
	s->next = NULL; //生成一个头结点,但不表示任何数
	return s;
}
int pop(stack*head);       //出栈
void push(stack*head,int x);//进栈
int main()
{
	stack *head=NULL;
	head = Linkstack();
	int i,m;
	for (i = 0; i < 10; i++){
		cin >> m;               //十个数进堆栈
	    push(head, m);
	}
	for (i = 0; i < 10;i++)
	  cout<<pop(head)<<"  ";       //倒序出堆栈
	cout << endl;
	return 0;
}
void push(stack*head,int x)
{
	stack*ptrl = new stack;
	ptrl->data = x;
	ptrl->next = head->next;
	head->next = ptrl;     //依然把head作为头结点
}
int pop(stack*head)
{
	if (head->next==NULL){
		cout << "栈已空"<<endl;
		return 0;
	}
	int l = head->next->data; //保存要出栈的值
	stack *p = head->next;
	head->next=p->next;
	delete p;               //删除以出栈的结点
	return l;
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号