数据结构与算法分析——c语言描述 练习3.3 答案
单链表,这个函数得在头文件和实现文件里面放,因为要修改next指针,所以放在main.c是不行的,除非使用extern 声明一下node节点,那么这样就达不到封装的目的了反而麻烦。
void SwapWithNext(Position BeforeP, List L) {
Position p1 = Advance(BeforeP);
Position p2 = Advance(p1);
BeforeP->Next = p2;
p1->Next = Advance(p2);
p2->Next = p1;
}
双链表,还是声明放在头文件,实现放在.c文件
void SwapWithNext(Position P, List L) {
Position beforeP1, afterP2, p1, p2;
p1 = P;
p2 = Advance(p1);
afterP2 = Advance(p2);
beforeP1 = Retreat(p1);
beforeP1->Next = p2;
p2->Next = p1;
p1->Next = afterP2;
afterP2->Prev = p1;
p1->Prev = p2;
p2->Prev = beforeP1;
}