首先你申请的 p3,p5 都指向的是未知区域,p3=p1->next;p2->next=p3;都是没什么意义的,这个函数里面的指针指来指去,到最后到时没有什么意义的,并没有把两节的交换!!
不知你的本意是什么,最简单的方法,就引入一个中间量: typed data;
data=p1->data; p1->data=p2->data; p2->data=data;
复杂点的:
void swap(NODE *p1,NODE *p2)
{
NODE *p3;
p3=(NODE*)mallco(sizeof(NODE));
// 假设类型为 int
p3->data=p1->data;
p1->data=p2->data;
p2->data=p1->data;
free(p3);
}
如果真的要交换两个结点的话(单链表),则由于没法得到p1前面的一个结点,因此是实现不了的!!
[
本帖最后由 PP_make 于 2010-4-25 18:03 编辑 ]