练习3.2 通过只调整链(而不是数据)来交换两个相邻的元素,分别使用
a. 单链表。
b. 双链表。
singlyList.h
#pragma once
#include <iostream>
struct ListNode {
int value;
ListNode * pNext;
};
void addListNode(ListNode * & p, int v) {
if (p==NULL) {
ListNode * pTem = new ListNode;
pTem->pNext = NULL;
pTem->value = v;
p = pTem;
}
else
addListNode(p->pNext, v);
}
void swap(ListNode * & p) { //chang the neighboring node;
if (NULL == p)
return;
ListNode * p1;
ListNode * p2;
p1 = p->pNext;
p2 = p1->pNext;
p1->pNext = p2->pNext;
p->pNext = p2;
p2->pNext = p1;
}
void traverse(ListNode * p) { //traverse the list and output the value
while (NULL != p)
{
std::cout << p->value << " ";
p = p->pNext;
}