首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

有个有关问题,请问一下

2012-05-20 
有个问题,请教一下这个程序是将符合条件的l链表节点赋值给另一个链表l2,然后再删除这个节点,可是删除的过

有个问题,请教一下
这个程序是将符合条件的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);
}
///////////////////////////////////////////////////////////////////////



[解决办法]
我运行了一下好像没什么问题啊

热点排行