链表逆序

数据结构

链表逆序

笔试题:编写一个函数,实现单链表逆序
image

代码

//方法一:将尾结点循环插到头节点后面,实现逆序
void reverse_list(single_list *head)
{
     single_list *p = head->next; //将链表除头节点的节点保存
     head->next = NULL;//将链表断开
     single_list *tmp = NULL;
     while(p != NULL)
     {
        tmp = p->next;//将后面还未逆序的节点保存

        //将p插入到head的后面
        p->next = head->next;
        head->next = p;

       //将tmp的值赋给p
        p = tmp;
     }
}


//方法二://将尾结点指向他的前驱 尾结点的前驱指向前驱的前驱
		 //最后再将头节点指向原本的尾结点(待完善)
void reverse_list(single_list *head)
{
	//single_list *Phead = head->next;
    //single_list *Lhead = head;
    //找到尾结点的前一个结点
    //while(Lhead->next)
    //   	Phead = Phead->next;
    //Lhead = Phead->next;
    //while(Phead->next)
    //{
    // 	Phead->next->next=Phead;
    //   Phead->next = NULL;
    // }
}
posted @ 2024-04-29 22:59  luxiaolim  阅读(6)  评论(0编辑  收藏  举报