我编写了一个 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);
}