我在使用带有结构的链表实现堆栈时遇到问题。该程序编译得很好,但是当我运行它时,它会打印第一个元素,然后将下一个节点读取为 NULL。我认为我将堆栈传递给 push 方法可能是一个错误,但我不确定并且我没有成功修复它,所以我请求您的帮助:
#include <stdio.h>
#include <stdlib.h>
struct stackNode{
    char data;
    struct stackNode *nextPtr;
};
typedef struct stackNode StackNode;
typedef StackNode *StackNodePtr;
void convertToPostfix(char infix[], char postfix[]);
int isOperator(char c);
int precedence(char operator1, char operator2);
void push(StackNodePtr *topPtr, char value);
char pop(StackNodePtr *topPtr);
char stackTop(StackNodePtr topPtr);
int isEmpty(StackNodePtr topPtr);
void printStack(StackNodePtr topPtr);
int main(){
    convertToPostfix(NULL, NULL);
    return 0;
}
void convertToPostfix(char infix[], char postfix[]){
    StackNode stack = {'(', NULL};
    StackNodePtr stackPtr = &stack;
    push(stackPtr, 'a');
    //printf("%s\n", stackPtr->data);
    printStack(&stack);
}
void push(StackNodePtr *topPtr, char value){
        StackNode *node;
        node=(StackNodePtr)malloc(sizeof(StackNodePtr));
        node->data=value;
        node->nextPtr=*topPtr;
        *topPtr=node;
}
void printStack(StackNodePtr topPtr){
    if(topPtr == NULL){
        printf("%s\n", "NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO");
        return;
    }
    printf("%c\n", topPtr->data);
    printStack(topPtr->nextPtr);
}
任何帮助,将不胜感激。
谢谢