建立一个链栈,实现栈的压栈和出栈操作。


头文件:  
#ifndef linkstack_H  
#define linkstack_H  
struct node  
{  
    int data;  
    node *next;  
};  
class linkstack  
{  
private:  
    node *top;  
public:  
    linkstack();  
    ~linkstack(){}  
    void push(int x);  
    int pop();  
    int gettop();  
    int empty();  
};  
#endif  
子函数:  
#include"linkstack.h"  
#include<stdlib.h>  
  
linkstack::linkstack()  
{  
    top=NULL;  
}  
  
void linkstack::push(int x)  
{  
    node *s;  
    s=new node;  
    s->data=x;  
    s->next=top;  
    top=s;  
}  
  
int linkstack::pop()  
{  
    node *p;  
    p=new node;  
    int x;  
    if(pop==NULL) throw"下溢";  
    x=top->data;  
    p=top;  
    top=top->next;  
    delete p;  
    return x;  
}  
  
int linkstack::gettop()  
{  
    return top->data;  
}  
  
int linkstack::empty()  
{  
    if(top==NULL)  
        return 1;  
    else  
        return 0;  
}  
主函数:  
#include<iostream>  
using namespace std;  
#include<stdlib.h>  
#include"linkstack.h"  
void main()  
{  
    linkstack l;  
    if(l.empty())  
        cout<<"链栈为空"<<endl;  
    else  
        cout<<"链栈非空"<<endl;  
    cout<<"分别对15和10执行入栈操作"<<endl;  
    l.push(15);  
    cout<<"栈顶元素为:"<<l.gettop()<<endl;  
    l.push(10);  
    cout<<"栈顶元素为:"<<l.gettop()<<endl;  
    cout<<"执行一次出栈操作"<<endl;  
    l.pop();  
    cout<<"栈顶元素为:"<<l.gettop()<<endl;  
}

猜你喜欢

转载自blog.csdn.net/ab111996/article/details/80169864