C和C++实现Stack

/* ********************************************************************** */
/*   使用c++实现Stack                                                     */
/* ********************************************************************** */

#include 
< stdio.h >

class  Stack
{
public :
    Stack();
    
~ Stack();
    
void  Push( void *  data);
    
void *  Pop();
protected :
    typedef 
struct  elementT {
        
struct  elementT *  next;
        
void *  data;
    }element;
    element
*  firstElement;
};

Stack::Stack() {
    firstElement 
=  NULL;
    
return ;
}

Stack::
~ Stack() {
    element
*  next;
    
while  (firstElement)
    {
        next 
=  firstElement -& gt;next;
        delete firstElement;
        firstElement 
=  next;
    }
    
return ;
}

void  Stack::Push( void *  data) {
    element
*  ele  =   new  element;
    ele
-& gt;data  =  data;
    ele
-& gt;next  =  firstElement;
    firstElement 
=  ele;
    
return ;
}

void *  Stack::Pop() {
    element
*  popElement  =  firstElement;
    
void *  data;

    
if  (firstElement  ==  NULL)
    {
        
// handle the error
        
// throw StackError(E_EMPTY);
    }
    data 
=  firstElement -& gt;data;
    firstElement 
=  firstElement -& gt;next;
    delete popElement;
    
return  data;
}

/* ********************************************************************** */
/*  使用c语言实现Stack                                                    */
/* ********************************************************************** */
#include 
< memory >

typedef 
struct  elementT {
    
struct  elementT *  next;
    
void *  data;
}element;

int  CreateStack(element  ** stack)
{
    
* stack  =  NULL;
    
return   1 ;
}

int  Push(element **  stack,  void *  data)
{
    element
*  ele;
    ele 
=  (element * ) malloc( sizeof (element));
    
if  ( ! ele)
    {
        
return   0 ;    
    }
    ele
-& gt;data  =  data;
    ele
-& gt;next  =   * stack;
    
* stack  =  ele;
    
return   1 ;
}

int  Pop(element **  stack,  void **  data)
{
    element
*  ele;
    
if  ( ! (ele  =   * stack))
    {
        
return   0 ;
    }
    
* data  =  ele -& gt;data;
    
* stack  =  ele -& gt;next;
    free(ele);
    
return   1 ;
}

int  DeleteStack(element **  stack)
{
    element
*  next;
    
while  ( * stack)
    {
        next 
=  ( * stack) -& gt;next;
        free(
* stack);
        
* stack  =  next;
    }
    
return   1 ;
}
</ memory ></ stdio.h >
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值