weiweiwei98 发表于 2018-12-17 15:56:27

链式栈问题

#include<stdio.h>
#include<malloc.h>
typedef char datetype;
typedef struct node
{
        datetype date;
        struct node *p;

} LSstack;

void LSstack_initialize(LSstack** headpoint);
int LSstack_notempty(LSstack* headpoint);
void LSstack_push(LSstack **headpoint, datetype);
int LSstack_pop(LSstack** headpoint, datetype*);
int LSstack_top(LSstack* headpoint, datetype*);



void LSstack_initialize(LSstack** S)
{       
        (*S) = (LSstack*)malloc(sizeof(LSstack));
        (*S)->p = NULL;
}

int LSstack_notempty(LSstack* S)
{
        if ((S->p) != NULL)
                return 0;
        else return 1;
}

void LSstack_push(LSstack **S, datetype a)
{       
        if ((*S)->p = NULL)
        {
                (*S)->date = a;
        }
        else
        {
                LSstack* m_p;
                m_p = (*S);
                (*S) = (LSstack*)malloc(sizeof(LSstack));
                (*S)->p = m_p;
                (*S)->date = a;
        }


}

int LSstack_pop(LSstack** S, datetype *d)
{       
        if ((*S) == NULL)
                return 0;
        else
        {
                LSstack* m_p;
                m_p = (*S)->p;
                *d = (*S)->date;
                free(*S);
                (*S) = m_p;
                return 1;
        }
       

}

int LSstack_top(LSstack* S, datetype *d)
{
        if(S == NULL)
                {
                        printf("error");
                        return 0;
                }
        *d = S->date;
        return 1;
}



求大佬帮我看看这栈问题出在哪 测试了一下好像不能存超过两个数

九少 发表于 2018-12-28 15:26:02

void LSstack_push(LSstack **S, datetype a)
{      
      if ((*S)->p = NULL)
      {
                (*S)->date = a;
      }

if ((*S)->p = NULL)判断里面应该是双等号==

页: [1]
查看完整版本: 链式栈问题