C++
函数功能:实现单链表的倒置
函数输入:单链表头节点
函数返回:返回头节点指针
//单链表的倒置
struct node *rev(struct node *head)
{
struct node *p1, *p2, *p3;
int temp;
if(head == NULL || head->next == NULL) //若head为空或只有一个节点
return head;
else if(head->next->next == NULL) //若只有两个节点,直接交换这两个节点的数据
{
p1 = head;
p2 = head->next;
temp = p2->data;
p2->data = p1->data;
p2->data = p1->data;
return head;
}
else //若有三个或三个以上的节点
{
p1 = head;
p2 = p1->next;
while(p2)
{
p3 = p2->next;
p2->next = p1;
p1 = p2;
p2 = p3;
}
head->next = NULL;
head = p1;
return head;
}
};