【求助】链表中节点的删除,有代码。
程序代码:
#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); }