【发布时间】:2020-06-07 10:32:08
【问题描述】:
该程序的目的是将中缀表达式转换为后缀,然后使用链表计算值。我试过使用 strcpy 无济于事,或者我错过了一些东西。我需要在这里使用一个字符串,因为当数字达到两位数时,它不会被推入堆栈。对这个有帮助吗?我尝试使用函数,以便在我的主程序中调用仅有的几个可用的函数。我的队列也有一组单独的函数,但是一旦我弄清楚如何解决这个问题,我就可以轻松地将其应用于其他函数。
struct StackNode {
char SData[126]; //this one here
struct StackNode *next;
};
struct StackNode* StackNewNode(char SData) //i dont know what to put in the char SData, is it a *?
{ //because it produces an invalid conversion error.
struct StackNode *stackNode = (struct StackNode*)malloc(sizeof(struct StackNode));
stackNode->SData = SData;
stackNode->next = NULL;
return stackNode;
}
char topstack(struct StackNode *root)
{
if (root == NULL)
{
return 0;
}
return root->SData;
}
void push(struct StackNode **root, char SData)
{
struct StackNode *stackNode = StackNewNode(SData);
stackNode->next = *root;
*root = stackNode;
printf("\n%c pushed to stack\n", SData);
}
char pop(struct StackNode **root)
{
if (*root == NULL)
{
return 0;
}
struct StackNode *temp = *root;
*root = (*root)->next;
char pop = temp->SData;
free(temp);
printf("%c popped from stack\n", popped);
return pop;
}
【问题讨论】:
-
char SData是单个字符的值。您应该为StackNewNode()和适当的地方传递一个指向const char数组的指针。
标签: c linked-list stack variable-assignment