关闭

栈 C++实现

2016人阅读 评论(0) 收藏 举报

先后写了栈的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);
    }

}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:405978次
    • 积分:5768
    • 等级:
    • 排名:第4447名
    • 原创:159篇
    • 转载:10篇
    • 译文:1篇
    • 评论:130条
    最新评论
    我的主页