单链表逆序(c/c++实现)

typedef struct LNode {
	int data;
	struct LNode *next;
}LNode;

LNode* reverse_linked_list(LNode *head) {
	LNode *next = NULL;
	LNode *prev = NULL;

	while (head) {
		next = head->next;
		head->next = prev;
		prev = head;
		head= next;
	}

	return prev;
}

对于链表的很多操作,通常有一个默认心得“先后再前”,这里的逆序算法的核心while循环里面.:
“先后”
先修改与后继相关的指针
第一步:保存当前节点的next指针
第二步:修改当前节点的next指针(指向前一个节点)
“再前”
再修改与前继相关的指针
第三步:prev指针向后移动
第四步:head向后移动


版权声明:本文为baidu_31945865原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。