zoukankan      html  css  js  c++  java
  • {链表操作}

    From 剑指Offer 何海涛 著

    #include <iostream>
    
    struct ListNode {
        int m_nValue;
        ListNode *m_pNext;
    };
    
    void AddToTail(ListNode **head, int value) {
        if(head != NULL) {
            ListNode **curr = head;
            while(*curr != NULL) {
                curr = &(*curr)->m_pNext; // 注意: 这里是要移动指针, 而非改变这个指针指向的数据!
            }
            *curr = new ListNode;         // 注意: 这里是要改变这个指针指向的数据, 而非移动指针!
            (*curr)->m_nValue = value;
            (*curr)->m_pNext = NULL;
        }
    }
    
    void RemoveNode(ListNode **head, int value) {
        if(head != NULL && *head != NULL) {
            ListNode **curr = head;
            while(*curr != NULL && (*curr)->m_nValue != value) {
                curr = &(*curr)->m_pNext; // 注意: 这里是要移动指针, 而非改变这个指针指向的数据! 
            }
            if(*curr != NULL) {
                ListNode *toBeDeleted = *curr;
                *curr = (*curr)->m_pNext; // 注意: 这里是要改变这个指针指向的数据, 而非移动指针!
                delete toBeDeleted;
            }
        }
    }

    测试集:

    void PrintList(const ListNode *head) {
        const ListNode *curr = head;
        while(curr != NULL) {
            std::cout << curr->m_nValue << " -> ";
            curr = curr->m_pNext;
        }
        std::cout << "NULL" << std::endl;
    }
    
    int main(int argc, char *argv[]) {
        ListNode *head = NULL;
        AddToTail(&head, 1);
        AddToTail(&head, 2);
        AddToTail(&head, 3);
        AddToTail(&head, 4);
        AddToTail(&head, 5);
        PrintList(head);
        
        RemoveNode(&head, 1);
        PrintList(head);
        RemoveNode(&head, 1);
        PrintList(head);
        RemoveNode(&head, 3);
        PrintList(head);
        RemoveNode(&head, 5);
        PrintList(head);
        RemoveNode(&head, 2);
        PrintList(head);
        RemoveNode(&head, 4);
        PrintList(head);
        
        return 0;
    }
  • 相关阅读:
    Java项目中读取properties文件,以及六种获取路径的方法
    在eclipse中使用JUnit4,以及使用JUnit4进行单元测试的技巧
    [Evernote]印象笔记使用经验技巧
    使用Word2010发布博客文章
    Win7/8 绿色软件开机启动
    常见笔试题
    排序
    数据库知识归纳(索引)
    数据库知识归纳(事务)
    Redis
  • 原文地址:https://www.cnblogs.com/long3216/p/4439181.html
Copyright © 2011-2022 走看看