栈 C++实现

先后写了栈的Java ,C实现,今天又上数据结构课,机房的环境是C++。本以为C和Java都没问题了,C++岂不是手到擒来?结果一写就出错,而且是一大堆错,郁闷~
缠着老师问了问,回家再埋头修炼,写了C++版链栈

程序清单:Stack.h        StackTest.cpp
程序实现:依次将0~19而是个数压栈,再依次出栈并输出

Stack.h 

/* Stack.h */
/* Coding by nyzhl */
template 
<class T>
class StackNode {
    
public:
        T data;
        StackNode 
*next;
}
;

template 
<class T>
class Stack {
    
public:
        Stack(
void):top(NULL) {}
        
bool IsEmpty(voidconst return top==NULL;}
        
void Push(const T data);
        
bool Pop(T *data);
        
bool Peek(T *data) const;
    
private:
        StackNode
<T> *top;
}
;

template 
<class T>
void Stack<T>::Push(const T data) {
    StackNode
<T> *node = new StackNode<T>();
    node
->data = data;
    node
->next = top;
    top 
= node;
}


template 
<class T>
bool Stack<T>::Peek(T *data) const {
    
if(IsEmpty()) return false;
    
*data = top->data;
    
return true;
}


template 
<class T>
bool Stack<T>::Pop(T *data) {
    
if(IsEmpty()) return false;
    
*data = top->data;
    StackNode
<T> *node = top;
    top 
= top->next;
    delete(node);
    
return true;
}

 

StackTest.cpp

/* StackTest.cpp */
/* Coding by nyzhl */
#include 
<stdio.h>
#include 
"Stack.h"

void main() {
    Stack
<int> *= new Stack<int>();
    
for(int i=0; i<20; i++ )
        s
->Push (i);
    
int num;
    
while(!s->IsEmpty()) {
        s
->Pop(&num);
        printf(
"%d ",num);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值