真郁闷

今天晚上本来要学习递归转非递归,自己写个栈,用一下,可是写了出来,就是报错。看了一个多小时,愣是没发现哪里错了。哎!!

代码贴出来,有人看到给提示一下,先谢了!!

 

/**置空栈**

**功能:将栈中的空间全部释放

**参数:置空的栈地址 

**/

void    clearStack(pLStack p)

{

    if ( isEmptyStack(p)) p = NULL;  //如果栈为空,不需要释放

    pLStack topNode;

    while ( !isEmptyStack(p)) 

    {

        topNode = p;

        p = p->next;

        free(topNode);

    }

}

 

/**判断栈是否为空**

**功能:判断栈是否为空 

**参数:需要判断的栈的地址

**返回:如果栈为空,则返回真,否则返回假。 

**/ 

bool    isEmptyStack(pLStack p)

{

    if ( p == NULL)

        true;

    return false;

}

 

/**将数据压入栈中 

**功能:将一个新数据压入栈顶 

**参数:新数据和目的栈地址

**返回:如果要存入成功,则返回TRUE,否则返回false 

**/ 

bool    PushStack(pLStack p,StackData data)

{

    pLStack newnode;

    newnode = (pLStack)malloc(sizeof(LStack)); //申请一个新的解读空间 

    if (newnode == NULL)    return false;   //如果申请失败,则发回FALSE 

 

    newnode->data = data;

    newnode->next = p;

    p = newnode;   //新的节点地址将成为栈顶 

    printf("=>%d/t",p->data);    

    return true;

}

 

/**将数据弹出栈 

**功能:将栈顶数据返回 

**参数:栈地址

**返回:栈顶数据 

**/ 

StackData   PopStack(pLStack   p)

{

    StackData topData;

    pLStack topNode;

    if ( isEmptyStack(p) ) return 0;   // 判断栈是否为空 返回空值 

    topData = p->data;

    topNode = p;

    p = p->next;

    printf("<=%d/t",topNode->data); 

    free(topNode);

    return topData;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值