void InitLian(Hode** head) { *head = (Hode*)malloc(sizeof(Hode)); (*head)->next = *head;中的(*head)->next = *head;
时间: 2023-05-25 19:02:06 浏览: 109
A:这行代码的作用是将指向头节点的指针(*head)的next指针指向头节点本身,从而形成一个循环链表。循环链表实际上就是在普通链表的基础上,将尾节点的next指针指向头节点,这样就可以形成一个环形结构,从最后一个节点可以直接跳转到第一个节点。
相关问题
void InitLian(Hode** head) { *head = (Hode*)malloc(sizeof(Hode)); (*head)->next = *head;为什么要用**head而不是*head
因为函数InitLian需要修改传入的head指针所指向的地址,即要在函数中分配内存(malloc)并将新分配的内存地址存储在head指针所指向的地址中。如果使用*head,那么函数中修改的是head指针指向的内存地址中存储的内容,而不是修改head指针本身的值,也就是这个指针指向的地址。因此,为了能够修改head指针本身的值,需要使用**head,这样函数中对head的修改才会反映到函数外部。