模板栈的实现以及调用失败

场景说明:实现了了模板栈,但是调用的过程中,无法实现基本的功能:

声明如下:

template<class T>struct SNode
{
    T t;
    SNode<T>* pNextNode;
};

template<class T>
class CStack
{

private:
    SNode<T>* m_pCStackTop;
    int  m_nNodeCount;

public:
    CStack();

    ~CStack();

    //进栈
    int PushStack(T t);

    //获取栈顶元素
    int GetTop(T& t);

    //出栈
    int PopStack(T& t);

    int DisplayStack();

    bool IsStackNotEmpty();

}; 
定义如下:
#include <stdio.h>#include <stdlib.h>
#include <iostream>
using namespace std;
#include "stack.h"

template<class T>
CStack<T>::CStack()
{
   //创建空头结点
   m_pCStackTop=new SNode<T>;
   if(NULL==m_pCStackTop)
   {
       exit(-1);
   }
   m_pCStackTop->pNextNode=NULL;

}
template<class T>
CStack<T>::~CStack()
{
    SNode<T>* pTmpNode=m_pCStackTop;
    while(NULL!=pTmpNode)
    {
        m_pCStackTop=pTmpNode->pNextNode;
        delete pTmpNode;
        pTmpNode=m_pCStackTop;
    }
}
template<class T>
int CStack<T>::PushStack(T t)
{
    SNode<T>* pNewNode=new SNode<T>;
    pNewNode->t=t;

    if(NULL==pNewNode)
    {
        exit(-1);

    }

    pNewNode->pNextNode=m_pCStackTop->pNextNode;
    m_pCStackTop->pNextNode=pNewNode;
    return 0;
}
template<class T>
int CStack<T>::GetTop(T &t)
{
    if(NULL==m_pCStackTop->pNextNode)
    {
        return -1;
    }

    t=m_pCStackTop->pNextNode->t;
    return 0;
}
template<class T>
int CStack<T>::PopStack(T &t)
{
    if(NULL==m_pCStackTop->pNextNode)
    {
        return -1;
    }

    t=m_pCStackTop->pNextNode->t;

    SNode<T>* pTmpNode=m_pCStackTop->pNextNode;
    m_pCStackTop->pNextNode=pTmpNode->pNextNode;
    delete pTmpNode;
    return 0;
}
template<class T>
int CStack<T>::DisplayStack()
{
    SNode<T>* pTmpNode=m_pCStackTop->pNextNode;
    while((NULL!=pTmpNode))
    {
        pTmpNode=pTmpNode->pNextNode;
    }
}

template<class T>
bool CStack<T>::IsStackNotEmpty()
{
    if(NULL!=m_pCStackTop->pNextNode)
    {
        return true;
    }

    return false;
}
时间: 2024-10-31 00:56:43

模板栈的实现以及调用失败的相关文章

Sql Server远程调用失败

这篇文章主要为大家介绍了SQL server服务显示远程过程调用失败的解决方法,还为大家提供了解决SQL SERVER 2008 R2配置管理器出现"远程过程调用失败"(0x800706be)错误提示的方案,感兴趣的小伙伴们可以参考一下 刚刚打开SQL Server 2008,想要新建一个数据库,却发现出现了一个问题,这个问题由于之前没有遇到过,所以下面整理解决SQL server服务远程调用失败的几个方法,供大家参考,具体内容如下 先看看出现的问题: 出现上面这个错误的原因可能是由于

解决安装不同版本office后造成的PIA COM组件调用失败

症状:TF400422, TF400423, TF400424: Failed to open in Microsoft Excel (Project, Outlook): Unable to cast COM object of type 'Microsoft.Office.Interop.Excel(Project, Outlook).ApplicationClass' to interface type 'Microsoft.Office.Interop.Excel._Applicatio

DllRegisterServer的调用失败的问题解决方法

今天安装歌词转换器的时候需要安装COMDLG32.OCX,在注册ActiveX控件时出错了, 错误提示是COMDLG32.OCX.ocx已加载,但是DllRegisterServer调用失败.其实在日常的工作中,用regsvr32 命令注册dll.ocx等时,这种模块已加载,但DllRegisterServer的调用失败的问题很常见,下面和大家分享一下我的经验,希望能够帮到大家. 方法/步骤 这种提示一般都是因为我们的权限不够造成的. 我的操作系统是win8 64位的,所有我就用我的系统和大家分

vs自动生成的WebService配置文件在部署到IIs6后,服务调用失败的解决方法

近日,在项目中需要引用java发布的WebService,添加服务引用后,调用一切正常. 配置如下: <system.serviceModel> <bindings> <basicHttpBinding> <binding name="SecurityServiceImplServiceSoapBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize=&qu

"最大工作进程数"导致的WCF调用失败

WCF服务寄宿在IIS中,当设置其"最大工作进程数"为2时,经常会出现服务无法被成功调用,具体异常信息如下: Type:System.ServiceModel.Security.MessageSecurityException Message:从另一方收到未进行安全处理或安全处理不正确的错误.有关错误代码和详细信息,请参见内部 FaultException. HelpLink: Source:System.ServiceModel.Internals TargetSite:TAsync

IE报错:模块&quot;scrrun.dll&quot;已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005

在我的win10系统上打开某内部网页登录的时候弹出'模块"scrrun.dll"已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005'报错信息,搞了好久都没有 搞好,最后百度找到注册文件“clock.zip”运行其中的批处理文件后成功登陆. 注册文件链接:http://files.cnblogs.com/files/xxlu/clock.zip 注意:在注册的时候要将批处理文件run.bat中clock.ocx组件的地址改为本地绝对地址,博主提供的r

SQL Sever 2008配置工具中过程调用失败解决方法

刚刚装了VS2013,然后打开数据库时,无论如何也连不上.打开数据库配置,出现如下界面: 上网搜了,试了很多方法,像什么把windows\system32\wbem下的framedyn.dll复制到system32目录下,还有照一个老外说的,下什么更新补丁,都没用!! 想重装SQL2008,结果运行安装程序,变成了英文版(以前装显示的是中文的),而且安装根目录选不了!巨想死! 万念俱灰下,打开360,卸载了一个叫"Microsoft SQL Server 2012LocalDB",重新

模块已加载,但对dllregisterServer的调用失败

在注册dll或者ocx的时候, 经常会遇到这么一个问题: 模块  已加载,但对dllregisterServer的调用失败,错误代码为0x8004***** 网上有网友回复说需要在管理员的模式下进行注册:本人测试过, 会出现如下问题: 模块  加载失败.请确保该二进制存储在指定的路径中,或者调试它以检查该二进制或相关的 .dll文件是否有问题.  找不到指定的模块 还是没有能解决问题,经过长时间尝试,终于用以下方式的第一点解决了问题 本人亲测:至于另外的方式,我没有测试过. 以下是解决win7运

[MS-SQL] SQL Server 2008 组态管理工具出现:远端进程调用失败 0x800706be 解决方法

[MS-SQL] SQL Server 2008 管理工具出现"远端进程调用失败 0x800706be"解决方法 因为项目需求电脑装的 SQL Server 是使用 SQL Server 2008 Express 版本,而自从安装完 VS 2012 之后原本正常的 SQL Server 竟然立马坏了,又因为时间总是太少事情总是太多,所以一直拖到最近才来找问题,不要问我那我工作怎办!因为至少 SQL 连远端的部分还是正常的! 问题由来 因为项目需求电脑装的 SQL Server 是使用