void insert(Node* list,int index,int data){
if(list->next=NULL){
Node* node=(Node*)malloc(sizeof(Node));
node->next=NULL;
node->data=data;
list->next=node;
return;
}
int length=1;
Node* p=list->next;
Node* node=(Node*)malloc(sizeof(Node));
node->data=data;
while(p){
if(length==index-1){
node->next=p->next;
p->next=node;
}
p=p->next;
length++;
}
}
插入一个结点到链表,这样写,供参考:
void InsList(Node* head, int i, int x)
{
Node* p = head, * s = NULL;
if (i < 1 || !head)
return;
while (p->next && i--) p = p->next;
if (i > 1) return;
s = (Node*)malloc(sizeof(Node));
if (!s) return;
s->next = NULL;
s->data = x;
s->next = p->next;
p->next = s;
}
你这个if的条件就错了
【以下回答由 GPT 生成】
这段代码是用来实现链表插入的逻辑,它的大致逻辑如下:
这段代码可能出现问题的地方在于:
为了解决这些问题,可以按照以下步骤进行修正:
修正后的代码如下:
void insert(Node* list, int index, int data){
if(index <= 0){
return;
}
if(list->next == NULL){
Node* node = (Node*)malloc(sizeof(Node));
node->next = NULL;
node->data = data;
list->next = node;
return;
}
int length = 1;
Node* p = list->next;
Node* node = (Node*)malloc(sizeof(Node));
node->data = data;
while(p && length < index-1){
p = p->next;
length++;
}
if(length == index-1){
node->next = p->next;
p->next = node;
}
}
这样修正之后,应该能够正常插入数据了。
【相关推荐】