有个问题,请教一下
这个程序是将符合条件的l链表节点赋值给另一个链表l2,然后再删除这个节点,可是删除的过程中,出了问题,得出不了正确的结果,大家看看,哪里错了
//////////////////////////////////////////////////////////////////
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}lnode,*link;
////////////////////////////////////////////////////////////////////
link wei ()
{
link l,p,r;
int x;
l=(lnode*)malloc(sizeof(lnode*));
l->next=NULL;
r=l;
printf("piease input some number:\n");
scanf("%d",&x);
while(x!=0000)
{
p=(lnode*)malloc(sizeof(lnode*));
p->data=x;
p->next=r->next;
r->next=p;
r=p;
scanf("%d",&x);
}
return l;
}
////////////////////////////////////////////////////////////////////
link chai(link l)
{
int i=1;
link p,l1,q;
link pre,t;
l1=(lnode*)malloc(sizeof(lnode*));//建立一个新建节点
l1->next=NULL;
pre=l;
p=l->next;// l指针,指向l节点
while(p!=NULL)
{
if(i%2==0)
{
q=(lnode*)malloc(sizeof(lnode*));//
q->data=p->data;//
q->next=l1->next;//
l1->next=q;//
i=i+1;//
////////////////////////////////////////////////////这里出了问题,怎么改,才能删除这个节点
t=p->next;
pre->next=p->next;
free(p);
p=t;
////////////////////////////////////////////////////
}
else
{
i=i+1;//
pre=p;
p=p->next;//
}
}
return l1;//
}
//////////////////////////////////////////////////////////////////////
void print(link l1)
{
link p;//
p=l1->next;//
printf("偶数位置组成的链表是:\n");
while(p!=NULL)
{
printf("%3d",p->data);
p=p->next;
}
printf("\n");
}
////////////////////////////////////////////////////////////////////
void main()
{
link l,l1;
l=wei();
l1=chai(l);
print(l1);
}
///////////////////////////////////////////////////////////////////////
[解决办法]
我运行了一下好像没什么问题啊