首页 > 其他 > 详细

线性表总结

时间:2019-03-25 23:05:55      阅读:150      评论:0      收藏:0      [点我收藏+]

1. 代码段1:单链表逆置

1.1 代码1

LNode *Inverse(LNode *L)              //1
{                                                       //2
LNode *p, *q;                                   //3
    p = L->next;                             //4
    L->next = NULL;                      //5
    while (p != NULL)                    //6
    {                                               //7
     q = p;                               //8
     p = p->next;                     //9
     q->next = L->next;           //10
     L->next = q;                     //11
    }                                               //12
    return L;                                   //13
}                                                       //14

1.2 不懂得地方

1.*和&的用法、功能和区别不太懂。
2.代码方面基本都能看懂,不过自己写的时候容易卡壳。
分析:新建p、q两个节点,p指向链表L,遍历链表,让q=p,然后p指向下一个节点,
q的后继等于L的后继,再将q赋值给L的后继。

2. 代码段2:双链表结点的逆置算法

2.1 代码2

void reverse(DLinkNode * &L)         //1
{                                                       //2
    DLinkNode *p = L->next, *q;       //3
    L->next = NULL;                         //4
    while(p != NULL){                       //5
        q = p->next;                            //6
        p->next = L->next;                  //7
        if(L->next != NULL)                //8
            L->next->prior = p;             //9
            L->next = p;                            //10
        p->prior  = L;                          //11
        p = q;                                     //12            
    }                                                 //13
}                                                     //14        

2.2 不懂得地方

1.第1行中* &一起用的功能是什么?
2.对while循环内的内容不是很懂。
分析:查阅书本资料后大致懂得了该算法的功能和构成。首先p指向头结点,
构造只有头结点的双链表L,遍历链表,修改p结点的next域,用q临时保存
其后继结点,再采用头插法将p结点插入链表中。 最后让p重新指向新结点。

线性表总结

原文:https://www.cnblogs.com/jmu-net-18-020/p/10596454.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!