# include <stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next; //递归定义
}LNode,*LinkList;
//typedef struct LNode LNode; 将结构体类型struct LNode重命名为LNode
//typedef struct LNode *LinkList; 将struct LNode *重命名为LinkList
//LinkList L; 等价于 struct LNode * L
//头插法建立单链表
LinkList List_HeadInsert(LinkList &L){
LNode *s;
int x;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
scanf("%d",&x);
while(x!=9999){
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s; //将新节点插入表中,L为头指针
scanf("%d",&x);
}
return L;
}
void printnode(LinkList &L){
LinkList q;
q=L->next;
while(q){
printf("%d ",q->data);
q=q->next;
}
}
//删除 相同元素
void Del_X_3(LinkList &L,ElemType x){
LNode *p;
if(L==NULL){
return;
}
if(L->data==x){
p=L;
L=L->next;
free(p);
Del_X_3(L,x);
}
else
Del_X_3(L->next,x);
}
int main(void){
LinkList L;
LNode s;
int n;
List_HeadInsert(L);
printnode(L);
printf("please delete data: \n");
scanf("%d",&n);
Del_X_3(L,n);
printf("now list");
printnode(L);
return 0;
}