zoukankan      html  css  js  c++  java
  • C++建立链表

    自己保存一下,建立链表的程序,省的以后每次建立链表的时候,还需要重新在写。

    通过下面的代码,建立的链表节点数为10,每个节点保存的数为其下标即:0-9

    这里要注意一点,在void createList(ListNode* &pHead)的时候,用的是指针引用,因为在main中head并没有开辟空间,如果在createList中为pHead开辟空间的时候,main中的head依旧还是指向NULL的。

    如果在main中为head开辟了空间的话,就不需要用指针的引用了。道理很简单,就和你传int参数是一个道理。createList中的pHead是形参,也就是说pHead的地址和main中head的地址是不一样的,如果在main中为head开辟了空间的话,那么pHead

    和head所保存的地址是一样的。后面就用了第二种方法实现。

    #include "stdafx.h"
    #include <iostream>
    #include<cstring>
    #include <vector>
    #include <assert.h>
    using namespace std;
    
    struct ListNode
    {
        int m_key;
        ListNode* next;
    };
    
    
    void createList(ListNode* &pHead)
    {
        pHead = new ListNode;
        pHead->m_key= 0;
        pHead->next = NULL;
        ListNode* p = pHead;
        for(int i=1; i<10; i++)
        {
            ListNode* pNewNode = new ListNode;
            pNewNode->m_key = i;
            pNewNode->next = NULL;
            p->next = pNewNode;
            p = pNewNode;
        }
    }
    
    void destoryList(ListNode* pHead)
    {
        assert(pHead!=NULL);
        ListNode* pNext = pHead->next;
        while(pNext != NULL)
        {
            delete pHead;
            pHead = pNext;
            pNext = pHead->next;
        }
        delete pHead;
        pHead = NULL;
        return;
    }
    
    
    int main()
    {
        ListNode* head = NULL;
        createList(head);
    
    
        destoryList(head);
    }

    void createList1(ListNode* pHead)
    {
        ListNode* p = pHead;
        for(int i=1; i<10; i++)
        {
            ListNode* pNewNode = new ListNode;
            pNewNode->m_key = i;
            pNewNode->next = NULL;
            p->next = pNewNode;
            p = pNewNode;
        }
    }
    
    
    void destoryList(ListNode* pHead)
    {
        assert(pHead!=NULL);
        ListNode* pNext = pHead->next;
        while(pNext != NULL)
        {
            delete pHead;
            pHead = pNext;
            pNext = pHead->next;
        }
        delete pHead;
        pHead = NULL;
        return;
    }
    
    
    int main()
    {
        ListNode* head = NULL;
        //createList(head);
        head = new ListNode;
        head->m_key =0;
        head->next = NULL;
        createList1(head);
    
    
        destoryList(head);
    }

    两者的效果是一样的。

  • 相关阅读:
    移动端测试小技巧分享
    【转】GT 的性能测试方案解析
    【测试工具】Macaca 自动遍历器 NoSmoke
    接口自动化测试
    【学习资料】 持续集成---测试自动化学习
    pipeline-安全测试
    【转】Appium 优化版
    SpringBoot2(003):简要回顾“HelloWorld” web 工程
    idea创建同名的maven工程时报错:Failed to create a Maven project 'xxx/pom.xml' already exists in VFS
    Maven:Unable to import maven project: See logs for details
  • 原文地址:https://www.cnblogs.com/cyttina/p/2740372.html
Copyright © 2011-2022 走看看