c++ 链表声明解读

c++ 链表声明解读

问题描述:

下面代码是网上的,见连接,有几个问题:

1.创建头结点的head是什么时候声明的?

//创建头结点 void List::create_List() { head = new Node(0); }

2.第三、四行代码List(){create_List();} ~List(){clear();}这个如何解读,是什么作用,

 

class List {
    public:
        List(){create_List();}
        ~List(){clear();}
        //创建头结点
        void create_List();
        //插入函数
        void insert(const int& d);
        //在指定位置插入
        void insert_pos(const int& d,const int& d1);
        //删除指定数据的节点
        void erase(const int& d);
        //修改指定数据
        void updata(const int& d,const int& d1);
        //反转链表函数
        void reverse();
        //打印
        void print();
    private:
        //节点结构
        struct Node{
                int data;
                Node * next;
                Node(const int& d):data(d),next(NULL){}
            };
        Node * head;//头节点
        //清理链表函数
        void clear(){
                Node * p = head;
                //从头节点开始循环删除
                while(p){
                        Node * q = p->next;
                        delete p;
                        p = q;
                    }
            }
        //查找数据d的上一个节点位置的函数
        //为了方便后面删除操作
        Node* find(const int& d){
                Node * p = head;
                for(;p;p=p->next){
                        if(p->next->data==d)
                                break;
                    }
                return p;
            }
    };
//创建头结点
void List::create_List()
{
     head = new Node(0);
}

https://blog.csdn.net/wang13342322203/article/details/80834390?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161901025416780269894175%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161901025416780269894175&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-2-80834390.first_rank_v2_pc_rank_v29&utm_term=c%2B%2B+%E5%8D%95%E9%93%BE%E8%A1%A8

1、head是它的私有成员呀,

Node * head;//头节点

2、

List()

 ~List()

这是构造函数和析构函数呀,C++类和对象特有的。你看,与类名同名,析构函数前有一个波浪线

  struct Node{
                int data;
                Node * next;
                Node(const int& d):data(d),next(NULL){}
            };
        Node * head;//头节点

===这不是很清楚么

很简单的构造和析构函数,兄弟。

构造函数,当你创建对象时,你可能会需要做一些初始化工作,主要是为成员变量进行初始化

析构函数,当你销毁对象时,你可能会需要做一些收尾工作,主要是释放一些申请的空间

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html