栈 C++实现

原创 2007年09月11日 23:17:00

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

}

C++栈的用法及栈的实现

首先看一下原c++栈的方法的基本用法: push(): 向栈内压入一个成员; pop(): 从栈顶弹出一个成员; empty(): 如果栈为空返回true,否则返回false; t...
  • qq_20366761
  • qq_20366761
  • 2017年04月11日 15:19
  • 10818

栈和队列(用C++实现栈和队列)

栈是一种后进先出的线型结构,C++实现栈的代码如下: #include using namespace std; #define MAXLEN 50 typedef struct { char ...
  • v_xchen_v
  • v_xchen_v
  • 2016年06月17日 21:36
  • 1307

C++ 类 实现栈

这个是类的实现“`includeusing namespace std; typedef int Item;typedef struct node{ Item data; ...
  • u013766436
  • u013766436
  • 2015年11月27日 10:31
  • 2847

[c++]栈模板的实现

头文件:StackTP.h #ifndef __STACKTP_H__ #define __STACKTP_H__ template class Stack { public: Stack();...
  • ZongYinHu
  • ZongYinHu
  • 2015年07月15日 09:49
  • 1203

c++实现栈的各种操作

以下是c++实现的栈的各种操作: #include using namespace std; // 定义一个节点的结构 typedef struct Node { int data...
  • liuwei271551048
  • liuwei271551048
  • 2014年05月10日 21:19
  • 614

【数据结构】顺序栈的实现(c++)

头文件: #pragma once #include #include using namespace std; template class SeqStack { public:...
  • zhaoyaqian552
  • zhaoyaqian552
  • 2015年05月28日 20:50
  • 662

【C++面试题】利用两个栈实现1个队列

1、题目   利用两个栈实现一个队列    2、要求   只能使用栈的pop(),top()和push(),以及测试栈是否为空empty()四个操作. 来实现队列的empty(), ...
  • liulongling
  • liulongling
  • 2016年02月19日 11:03
  • 1872

数组实现栈功能(C++练习记录)

通过数组实现栈功能。MyStack.h MyStack.cpp demo.cpp
  • h532600610
  • h532600610
  • 2017年03月02日 11:05
  • 480

C++ 顺序栈(类模板实现)

#include "stdafx.h" #include #include using namespace std; ///////////////////////////////////////...
  • thisnameokbu
  • thisnameokbu
  • 2014年06月12日 18:41
  • 540

c++实现栈的基本操作

栈的定义    栈(Stack)又称堆栈,是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。 栈有两种实现的方式。一种是顺序存储,和数组类似;一种是链式存储,和单链表类似。650) ...
  • windyblankboy
  • windyblankboy
  • 2016年06月01日 19:01
  • 2257
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:栈 C++实现
举报原因:
原因补充:

(最多只允许输入30个字)