【发布时间】:2021-01-27 09:28:22
【问题描述】:
主代码本身工作正常,但我想使用字符串而不是 char,这可能是因为我忽略了一些荒谬的简单事情。这是一段小sn-p代码:
struct Stack
{
char *SData;
int counter;
struct Stack *next;
};
struct Stack* StackNewNode(char SData)
{
struct Stack *stackNode = (struct Stack*)malloc(sizeof(struct Stack));
stackNode->SData = SData; //error here because of the difference of char, should i use []?
stackNode->next = NULL;
return stackNode;
}
void PUSH(struct Stack **root, char SData) //this part only pushes a character
{
struct Stack *stackNode = StackNewNode(SData);
stackNode->next = *root;
*root = stackNode;
printf("\n%c pushed to stack\n", SData);
}
void POP(struct Stack **root)
{
if (*root == NULL)
{
return;
}
struct Stack *temp = *root;
*root = (*root)->next;
char pop = temp->SData; //how should i pop a full string?
free(temp);
printf("%c popped from stack\n", pop);
}
我还想在堆栈中实现一个计数器。我应该使用Stack->counter++ 还是有其他更正确的方法?
抱歉,这是我第一次来这里的文字墙
【问题讨论】:
-
不清楚您要做什么。在任何人可以帮助您之前,您需要自己弄清楚这一点。 Stack 应该包含字符串还是字符?你有一种方式,另一种方式。如果你想要字符串 (char*) 那么你需要传递 char* 并处理所需的内存,
-
您甚至都没有尝试将
SData存储在任何地方... -
stackNode->SData = SData;应该会给你一个警告。关于“从整数分配指针”
标签: c linked-list stack