gpt4 book ai didi

c - 链表和双指针

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:20 25 4
gpt4 key购买 nike

在下面的代码中,我试图在特定节点之后插入一个节点。在该函数中,我将提供前一个节点的地址作为输入,我想在该节点之后插入新节点。问题出在函数 insertAfter() 的第 10 行 - 它说我无法访问 *prev_ref->next。

#include<stdio.h>
#include<stdlib.h>

struct node
{
int data;
struct node* next;
};

void push(struct node **head_ref, int data)
{

struct node* newNode = (struct node*)malloc(sizeof(struct node)) ;
newNode->next= *head_ref;
newNode->data= data;
*head_ref= newNode;

}


void insertAfter(struct node **prev_ref, int data)
{
if(*prev_ref==NULL)
{
printf("prev ref cant be null");
return;
}
struct node * newNode;
newNode = (struct node*)malloc(sizeof(struct node)) ;
newNode->next= *prev_ref->next;
newNode->data= data;
*prev_ref->next= newNode;

}


void printList(struct node *node)
{
while (node != NULL)
{
printf(" %d ", node->data);
node = node->next;
}
}

main()
{
struct node* head = NULL;
push(&head, 7);
push(&head, 1);
insertAfter(&head, 8);
printf("\n Created Linked list is: ");
printList(head);
getchar();
return 0;

}

最佳答案

你知道 (*p).s 等同于 p->s 吗?我建议您尝试类似 (*prev_ref)->next(**prev_ref).next

关于c - 链表和双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24505205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com