#include <stdio.h>
#include <stdlib.h>
#define false 0
#define true 1
typedef struct
{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList List_HeadInsertv2(LinkList L)
{
int x;
L=(LNode *)malloc(sizeof(LNode));
L->next=NULL;
scanf("%d",&x);
while(x!=999)
{
LNode *q=(LNode *)malloc(sizeof(LNode));
q->next=L->next;
q->data=x;
L->next=q;
scanf("%d",&x);
}
return L;
}
LinkList List_HeadInsert(LinkList L)
{
int x;
if(L==NULL)
{
scanf("%d",&x);
if(x!=999)
{
L=(LinkList)malloc(sizeof(LNode));
L->data=x;
L->next=NULL;
}
else return L;
}
scanf("%d",&x);
while(x!=999)
{
LNode *q=(LNode *)malloc(sizeof(LNode));
q->next=L;
q->data=x;
L=q;
scanf("%d",&x);
}
return L;
}
LinkList List_TailInsert(LinkList L)
{
int x;
LNode * p;
if(L==NULL)
{
scanf("%d",&x);
if(x!=999)
{
L=(LinkList)malloc(sizeof(LNode));
L->data=x;
L->next=NULL;
p=L;
}
else return L;
}
scanf("%d",&x);
while(x!=999)
{
LNode * q=(LNode *)malloc(sizeof(LNode));
q->data=x;
q->next=NULL;
p->next=q;
p=q;
scanf("%d",&x);
}
return L;
}
LinkPrint(LinkList L)
{
LNode * p=L->next;
if(p==NULL)
{
printf("\n");
}
while(p!=NULL)
{
printf("%d;;",p->data);
p=p->next;
}
}
_Bool DeleteAllX(LinkList * L,int x)
{
LNode *p=*L;
if(*L==NULL)
{
return ;
}
if((*L)->data==x)
{
p=*L;
*L=(*L)->next;
free(p);
DeleteAllX(L ,x);
}
else if((*L)->data!=x)
{
DeleteAllX(&((*L)->next) ,x);
}
}
_Bool DeleteAllXv2(LinkList *L,int x)
{
LNode *p=*L;
if(*L==NULL)
{
return ;
}
if((*L)->data==x)
{
p=*L;
*L=(*L)->next;
free(p);
DeleteAllX(L ,x);
}
else if((*L)->data!=x)
{
DeleteAllX(&((*L)->next) ,x);
}
}
int main()
{
LinkList L;
L=NULL;
L=List_HeadInsertv2(L);
LinkPrint(L);
printf("\n");
DeleteAllXv2(&(L->next),3);
LinkPrint(L);
return 0;
}
|