先后写了栈的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(void) const ...{ 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> *s = new Stack<int>();
for(int i=0; i<20; i++ )
s->Push (i);
int num;
while(!s->IsEmpty()) ...{
s->Pop(&num);
printf("%d ",num);
}
}
1431

被折叠的 条评论
为什么被折叠?



