码迷,mamicode.com
首页 > 其他好文 > 详细

线性表总结

时间:2019-03-25 23:34:46      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:遍历   while   return   str   ==   ret   功能   ext   循环   

1. 代码段1简介:合并两个有序链表

## 1.1. 代码1


struct ListNode                                                                                        \\1
{                                                                                                      \\2
    int m_nValue;                                                                                      \\3
    ListNode *m_pNext;                                                                                 \\4
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)                                                \\5
{                                                                                                      \\6
    if(pHead1 == NULL)                                                                                 \\7
        return pHead2;                                                                                 \\8
    else if(pHead2 == NULL)                                                                            \\9
        return pHead1;                                                                                 \\10
                                                                                                       \\11
    ListNode* pMergedHead = NULL;                                                                      \\12
                                                                                                       \\13
    if(pHead1->m_nValue < pHead2->m_nValue)                                                            \\14
    {                                                                                                  \\15
        pMergedHead = pHead1;                                                                          \\16
        pMergedHead->m_pNext = Merge(pHead1->m_pNext, pHead2);                                         \\17 
    }                                                                                                  \\18
    else                                                                                               \\19            
    {                                                                                                  \\20
        pMergedHead = pHead2;                                                                          \\21
        pMergedHead->m_pNext = Merge(pHead1, pHead2->m_pNext);                                         \\22 
    }                                                                                                  \\23
                                                                                                       \\24
    return pMergedHead;                                                                                \\25
};                                                                                                     \\26

2. 不懂的地方

14行到23行,为什么这个功能的实现需要写一个递归函数?
遍历整个链表,将数据一个个插入到总链表里的方法是否可行,两种方法孰优孰劣呢?

第7行到第10行设置的两个判断条件,能够有效防止因空链表导致程序的奔溃,这很值得我们学习!

2. 代码段1简介:查找倒数第k个结点

2.1 代码1


int findNode(LinkList l,int k)     \\1
{                                  \\2
    Node *s1,*s2;                  \\3
    s1=s2=l;                       \\4
    int counter=0;                 \\5
    while(s1->next)                \\6
    {                              \\7                
        if(counter<k-1)            \\8
        {                          \\9
            s1=s1->next;           \\10
            counter++;             \\11
        }                          \\12
        else                       \\13
        {                          \\14
            s1=s1->next;           \\15
            s2=s2->next;           \\16
        }                          \\17
    }                              \\18
    return s2->data;               \\19
}                                  \\20

typedef struct Node                \\21
{                                  \\22
    int data;                      \\23
    Node *next;                    \\24
}*LinkList;                        \\25

2.2 自己不懂的地方

20-24行是结构体定义哦
我不明白13-17行的代码是如何实现找到倒数第k个结点的值的功能的?

第六行,while循环里的条件是判断s1的下一个结点是否为空,为空则不执行循环。
第8-12行的代码,是判断程序是否遍历到了倒数第k个结点,s1=s1->next这句代码的
功能是移到下一个结点去。

线性表总结

标签:遍历   while   return   str   ==   ret   功能   ext   循环   

原文地址:https://www.cnblogs.com/seerking/p/10596451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!