单链表反转

设置链表数据结构

1
2
3
4
5
typedef struct Node* List;
struct Node{
int Data;
List Next;
};

反转链表,且不占用额外空间

1
2
3
4
5
6
7
8
9
10
11
void Reverse(List &L) {
List pre, next;
pre = NULL;
while (L) {
next = L->Next;
L->Next = pre;
pre = L;
L = next;
}
L = pre;
}

反转链表,返回反转后的结果,原链表不受影响

1
2
3
4
5
6
7
8
9
10
11
12
List Reverse(List L) {
List t;
t = NULL;
while (L) {
List p = (List)malloc(sizeof(List));
p->Data = L->Data;
p->Next = t;
L = L->Next;
t = p;
}
return t;
}

反转链表,返回翻转后的结果,原链表移到最后一个结点

1
2
3
4
5
6
7
8
9
10
11
List Reverse(List L) {
PtrToNode t = NULL;
PtrToNode L2 = NULL;
while (L != NULL) {
t = L->Next;
L->Next = L2;
L2 = L;
L = t;
}
return L2;
}

本文标题:单链表反转

文章作者:admin

发布时间:2017年10月16日 - 21:10

最后更新:2017年10月16日 - 22:10

原始链接:https://kxp555.coding.me/2017/10/16/单链表反转/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。