今天上数据结构,最后讲到了链表反转,课上怎么都没有弄清楚,回来整理了一下思路
void Reverse (LinkList &L) {
if (L -> next == NULL || (L -> next) -> next == NULL) return ; // if only have no more than 2 elements
LinkList temp1 = L -> next;
LinkList temp2 = temp1 -> next;
while (temp2) {
temp1 -> next = temp2 -> next;
temp2 -> next = L -> next;
L -> next = temp2;
temp2 = temp1 -> next;
}
}
这里建立的表是存在空表头的,如果每次都改变表头的next的话可以只开两个指针,但是如果开三个指针的话就可以最后循环结束后直接赋值给表头的next。