/**************************************************
设计一个递归算法,删除不带头结点的单链表L中所有为x的结点
***************************************************/
#include<stdio.h>
#include<stdlib.h>//molloc函数free函数要用到的库函数
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*linklist;
linklist createfromhead(LNode *L);
void Rdelete(LNode *L,int x);
void print(LNode *L);
int main(void)
{
linklist L,stu;
stu=createfromhead(L);
int x;
printf("请输入要删除的值:");
scanf("%d",&x);
Rdelete(stu,x);
print(stu);
}
void Rdelete(LNode *L,int x)//递归按值删除
{
LNode *p;
if(L==NULL)
{
return;
}
if(L->data==x)
{
p=L->next;
L->data=p->data;
L->next=p->next;
free(p);
Rdelete(L,x);
}
else
{
Rdelete(L->next,x);
}
}
linklist createfromhead(LNode *L)//头插法
{
LNode *s;
int flag = 1,c;
L=NULL;
while(flag)
{
scanf("%d",&c);
if(c!=-1)
{
s=(linklist)malloc(sizeof(LNode));
s->data=c;
s->next=L;
L=s;
}
else
{
flag=0;
}
}
return L;
}
void print(LNode *L)//打印
{
linklist p;
p=L;
do
{
printf("%d\n", p->data);
p = p->next;
}while(p!=NULL);
}
为什么我这个代码打印出来是倒序的