真郁闷

来源:互联网 发布:阿里金融云服务 编辑:程序博客网 时间:2024/04/29 18:48

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

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

 

/**置空栈**

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

**参数:置空的栈地址 

**/

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;

}