回 帖 发 新 帖 刷新版面

主题:关于逆置单链表算法(c++)自己看书怎么也看不懂,求助,讲解一下

学了半年,自己什么也没有学会,重新拜读严教授的书,研读到“逆置单链表”时候,看到算法,怎么也看不懂,希望大虾们讲解一下算法,一直不懂,谢谢!

回复列表 (共3个回复)

沙发

整个过程就是围绕这改变节点的指针域这一问题展开。

具体实现:

1. 两个节点指针 分别指向相邻的两个节点
2. 保存推进指针域的值
3. 改变指针域
4. 推进

如此循环 直到一个节点指针指向NULL
         另一个节点指针指向尾节点。

LinkList *Reserver(LinkList *head)
{
    if(head==NULL){
        printf("NULL LINE!!\n");
        return NULL;
    }//条件放在定义变量之前
     //关于指针的引用 引用前一定要检查,不然错误很多

    LinkList *pro=NULL;
    LinkList *temp=NULL; //临时指针,用于保存推进指针


    while(head) 
    {
        temp=head->next; //临时指针,用于保存推进指针
        head->next=pro;  //改变指针域
        pro=head;        //推进相邻指针域
        head=temp;       //推进相邻指针域
    }
    
    return pro;
}

板凳

直白的说就是带头结点单链表的建立。依次将链表中的结点按照头插法重新建立单链表。

3 楼

我刚学到单链表,  无法解答……

我来回复

您尚未登录,请登录后再回复。点此登录或注册