链式栈的C++实现

Tips:此栈栈内数据为 int 型。

//10:13:2015 by tracelessspring 

struct Node {
int data;
Node *next;
};

class linkstack {
private:
Node *first;
public:
linkstack() {
    first = NULL;
}

~linkstack() {
    makeEmpty();
}

void push(int x) {             //其实push的实现方式很重要,它决定了你的链表的组织方式,从而决定了链表的各种特性,进而影响了后面各个函数如pop,gettop等等的实现。
    Node *node = new Node;
    node->data = x;
    node->next = first;
    first = node;
}

void  pop(int &x) {
    if (first == NULL)
    {
        cout << "the stack is empty" << endl;
        exit(0);
    }
    x = first->data;
    Node *temp = first;
    first = first->next;
    delete temp;
}

int gettop() {
    return first->data;
}

bool isempty() {
    return first == NULL;
}

int getsize() {
    int size = 0;
    Node *temp = first;
    while (temp != NULL)
    {
        size++;
        temp = temp->next;
    }
    return  size;
}

void makeEmpty() {
    while (first != NULL)
    {
        Node *temp = first;
        first = first->next;
        delete temp;
    }
}

void printelement() {
    Node *temp = first;
    while (temp != NULL)
    {
        cout << temp->data << " ";
        temp = temp->next;
    }
    cout << endl;
}
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值