【发布时间】:2023-03-31 21:17:01
【问题描述】:
我在此程序中的pop() 函数存在一些问题。这是一个栈作为单链表的实现,你可以看到 pop 函数有两个参数:
void pop(STACK *stack, char **name)
我被告知:在pop 函数中为name 分配内存,并使用**name 参数返回name 或NULL。我尝试了几件事,但我不明白这实际上意味着什么,以及如何做到这一点,因为该函数不返回任何内容(void 类型)。一般来说,我很难理解这个**name 论点,为什么我们甚至要首先使用它。到目前为止,这是我的代码:
typedef struct _stack STACK;
typedef struct _sElem stackElement;
struct _stack{
stackElement *head;
};
struct _sElem{
char *name;
stackElement *next;
};
//solved:
void pop(STACK *stack, char **name){
if(stack == NULL || stack->head == NULL){
printf("Stack is empty. \n");
}else{
stackElement *temp = stack->head;
char **nodeName = malloc(sizeof(char*));
char *tempName = temp->name;
(*nodeName)=tempName;
(*name) = (*nodeName);
stack->head = temp->next;
free(temp);
}
}
int main(){
STACK *myStack = NULL;
char *tempName = NULL;
push(myStack, "One");
push(myStack, "Two");
push(myStack, "Three");
pop(myStack, &tempName);
pop(myStack, &tempName);
//free stack and tempName
return 0;
}
感谢您的帮助。谢谢。
【问题讨论】:
标签: c stack singly-linked-list