栈的实现

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define VARTYPE char //默认存放char类型


using namespace std;




struct myNode;
typedef struct myNode Node;
typedef Node* _Stack;
typedef Node* PtrToNode;


struct myNode
{
    VARTYPE data;
    PtrToNode next;
};


void _push(_Stack &T,VARTYPE x)
{
    PtrToNode tmp = (PtrToNode)malloc(sizeof(Node));
    if(tmp==NULL)
        perror("malloc failed");
    else
    {
        tmp->data = x;
        tmp->next = T;
        T = tmp;
    }
}


void _pop(_Stack &T)
{
    PtrToNode tmp;
    tmp = T;
    T = T->next;
    free(tmp);
}


int _isempty(_Stack &T)
{
    return T->next==NULL;
}


void _delstack(_Stack &T)
{
    while(!_isempty(T))
    {
        _pop(T);
    }
}


VARTYPE _top(_Stack &T)
{
    return T->data;
}


_Stack create(_Stack &T)
{
    T = (PtrToNode)malloc(sizeof(Node));
    T->next = NULL;
    return T;
}


int main()
{
    _Stack T = create(T);
    _push(T,'a');
    _push(T,'b');
    _push(T,'c');
    _pop(T);
    _pop(T);
    _pop(T);
    _delstack(T);
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值