所以我的运行时间很短,无法完成。我只剩下一件事要做,它是链接列表堆栈的pop函数。我不确定为什么我不能让它工作,我明白为什么,但我不明白如何解决这个问题。这是代码......
void pop(node** hd){
if(hd == NULL){
printf("%s %c", "No solution available, exiting program.");
exit(-1);
}
node* temp = (*hd) -> next;
free(hd);
if(temp == NULL){
printf("%s %c", "No solution available, exiting program.");
exit(-1);
}
*hd = temp;
}
这是结构......
typedef struct nodeStruct
{
int valX, valY;
struct nodeStruct* next;
}node;
答案 0 :(得分:3)
node *temp = (*hd)->next;
因为hd是双指针。
答案 1 :(得分:1)
您需要免费*hd
:
static void pop(node **head)
{
if (head && *head) {
node *temp = (*head)->next;
free(*head);
*head = temp;
}
}
请注意,如果temp
为NULL,则不是错误 - 您刚刚到达堆栈的末尾。