设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点
#include <stdio.h> #include <stdlib.h> typedef struct node{ int data; struct node *next; }LNode,*LinkList; void CreateList(LinkList &L) //头插法 { L=NULL; int x; scanf("%d",&x); while(x!=999) { LNode *lnode=(LinkList)malloc(sizeof(LNode)); lnode->data=x; lnode->next=L; L=lnode; scanf("%d",&x); } } void TailCreate(LinkList &L) { L=NULL; LNode *p,*r=NULL;//若r=L;指向的都是空指针,不一定是表头指针 int x; scanf("%d",&x); while(x!=999) { p=(LNode*)malloc(sizeof(LNode)); p->data=x; p->next=NULL; if(r==NULL) //注意这里!! L=p; else r->next=p; r=p; scanf("%d",&x); } } void Delete(LinkList &L,int x) { if(L==NULL) return; LNode *s; if(L->data==x) { s=L; L=L->next; free(s); Delete(L,x); } else Delete(L->next,x); } void displayList(LinkList L) { LNode *p=L; while(p!=NULL) { printf("%d ",p->data); p=p->next; } } int main() { LinkList L; TailCreate(L); displayList(L); Delete(L,2); printf("\n"); displayList(L); return 0; }
标签:38,LNode,int,next,LinkList,NULL,data From: https://www.cnblogs.com/simpleset/p/17743826.html