gpt4 book ai didi

c - 删除链表中M个节点后的N个节点

转载 作者:行者123 更新时间:2023-11-30 17:49:01 24 4
gpt4 key购买 nike

我编写了一个C程序,用于删除m个节点之后的n个节点。我不明白为什么它不起作用。我使用头节点而不是头指针。使用头节点而不是头指针好吗?

这是我的代码:

#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
};

struct node* create()
{
struct node *head=malloc(sizeof(struct node));
head->next=NULL;
return head;
}

void insert(struct node *head,int x)
{
struct node *temp=head;
struct node *new=malloc(sizeof(struct node));
new->data=x;
new->next=NULL;
while(temp->next!=NULL)
temp=temp->next;
temp->next=new;

}

void display(struct node *head) {
struct node *temp=head->next;
while(temp!=NULL)
{
printf("\n%d\n",temp->data);
temp=temp->next;
}
}

void skipMDeleteN(struct node *head,int m,int n)
{
int i;
struct node *cur=head->next;
while(cur)
{printf("djhfj");
for(i=1;i<m,cur!=NULL;i++)
cur=cur->next;

if(cur==NULL) return;

struct node *t=cur->next;
for(i=1;i<=n;i++)
{
struct node *temp=t;
t=t->next;
free(temp);
}
cur->next=t;
cur=t;
}
}

int main()
{
struct node *head=create();
int i;
for(i=1;i<=10;i++)
{
insert(head,i);
}
int m=2,n=2;
skipMDeleteN(head,m,n);
display(head);
}

最佳答案

修复如下:

for(i=1;i<m && cur != NULL;i++) //Replace ',' with &&
{
cur=cur->next;
}
if(cur==NULL) return;

struct node *t=cur->next;
for(i=1;i<=n && t!=NULL;i++) // Check if t reaches end of node.
{
struct node *temp=t;
t=t->next;
free(temp);
}

关于c - 删除链表中M个节点后的N个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159645/

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