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;
    }
  • 相关阅读:
    JS控制SVG缩放+鼠标控制事件
    JS多线程之Web Worker
    通过Java调用Python脚本
    Cornerstone的使用
    SVN服务器的搭建
    Python 函数作用域
    RDD转换算子(transformantion)
    Spark RDD简介
    Django 外键
    Django 模型常用属性
  • 原文地址:https://www.cnblogs.com/long3216/p/4439181.html
Copyright © 2011-2022 走看看