反转单链表

    为了正确地反转一个链表,需要调整指针的指向。与指针操作相关代码总是容易出错的,因此最好在动手写程序之前作全面的分析。在面试的时候不急于动手而是一开始做仔细的分析和设计,将会给面试官留下很好的印象,因为在实际的软件开发中,设计的时间总是比写代码的时间长。与其很快地写出一段漏洞百出的代码,远不如用较多的时间写出一段健壮的代码。


实现代码如下:

void sll_reverse_solution2(t_sll_node **pp_root)
{
	if (pp_root == NULL || *pp_root == NULL)
		return;

	t_sll_node *p_curr = *pp_root;
	t_sll_node *p_prev = NULL;

	while (p_curr != NULL)
	{
		t_sll_node *p_next = p_curr->p_next;
		p_curr->p_next = p_prev;

		p_prev = p_curr;
		p_curr = p_next;


	}

	*pp_root = p_prev;

}


参考:

http://zhedahht.blog.163.com/blog/static/2541117420073471124487/



你可能感兴趣的:(数据结构与算法)