【求助】链表中节点的删除,有代码。
程序代码:#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(NODE)
typedef struct node
{
int a;
struct node*next;
}NODE;
NODE* creat()
{
int n=0;
NODE*head=NULL;
NODE*p1=NULL;
NODE*p2=NULL;
p1=p2=(NODE*)malloc(LEN);
printf("enter\n");
scanf("%d",&p1->a);
while(p1->a != 0)
{
n++;
if(n==1)head=p1;
else
{
p2->next=p1;
p2=p1;
p1=(NODE*)malloc(LEN);
scanf("%d",&p1->a);
}
}
p2->next=NULL;
return head;
}
NODE* del(int n,NODE*p)
{
int k;
NODE*q=NULL;
NODE*head=NULL;
head=p=q;
for(k=0,head=p;k<n-1,p!=NULL;)//查找第n个节点
{
p=p->next;
k++;
}
q=p->next; //q成为要删除的节点
p->next=q->next;
free(q);
return head;
}
void print(NODE*p2)
{
printf("%d",p2->a);
p2=p2->next;
}
int main()
{
NODE*p1=NULL;
NODE*p2=NULL;
p1=creat();
int n;
printf("enter\n");
scanf("%d",&n);
p2=del(n,p1);
printf("print\n");
print(p2);
}






