精华内容
下载资源
问答
  • C++构造函数的初始化链表

    千次阅读 2019-03-16 12:55:48
    构造函数的初始化链表 1.构造函数体赋值 在我们创建对象的时候,编译器会自动调用构造函数给创建的对象中各个成员变量一个合适的初始值。 例如下面的代码: class Date { public: Date(int year, int month, int ...

    构造函数的初始化链表

    1.构造函数体赋值

    在我们创建对象的时候,编译器会自动调用构造函数给创建的对象中各个成员变量一个合适的初始值。

    例如下面的代码:

    class Date
    {
    public:
    	Date(int year, int month, int day)
    	{
    		_year = year;
            //_year = 1997;
    		_month = month;
            //_month = 9;
    		_day = day;
            //_day = 21;
    	}
    
    private:
    	int _year;
    	int _month;
    	int _day;
    };
    

    虽然说,调用这个构造函数之后,对象的各个成员变量都有了一个初始值,但是这不能叫作成员变量的初始化。这个只能叫赋值。**因为我们在初始化的时候,各个变量只能初始化一次,可是在这里却可以多次赋值。**所以,这里不能叫做初始化。


    2.初始化列表

    那么对于上面的情况,既然我们不叫它为初始化而叫赋值,那么对于成员变量的初始化到底是什么?

    这里就引出了一个初始化列表。

    初始化列表:一个冒号开始,接着是一个以逗号分隔的数据成员列表 ,每个成员变量后面跟着一个放在括号中的初始值或表达式。

    class Date
    {
    public:
    	Date(int year, int month, int day)
    		:_year(year),
    		_month(month),
    		_day(day)
    	{}
    
    private:
    	int _year;
    	int _month;
    	int _day;
    };
    

    注意:

    1. 每个成员变量在初始化列表中 只能出现一次,因为初始化只能初始化一次。

    2. 类中包含以下成员,必须在初始化列表中初始化:

      • 引用成员变量

      • const成员变量

      • 类类型成员(该类没有默认的构造函数)

        class A
        {
        public:
        	A(int a)
        		:_a(a)
        	{}
        private:
        	int _a;
        };
        
        class B
        {
        public:
        	B(int c, int a)
        		:_c(c),
        		_b(10),
        		_a(a)
        	{}
        private:
        	int& _c;
        	const int _b;
        	A _a;
        };
        
      • 尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,一定会先检查初始化列表在走函数体内部。

      • 成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后顺序无关


    3.类中的static成员

    1.概念

    声明为static的类成员称之为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态的成员变量一定要在类外进行初始化

    2.特性

    1. 静态成员为所有类对象所共享,不属于某个具体的实例。
    2. 静态成员变量必须在类外定义,定义时不添加static关键字。
    3. 类静态成员即可用类名::静态成员或者对象.静态成员。
    4. 静态成员没有隐藏的this指针,不能访问任何静态成员。
    5. 静态成员和类的普通成员一样,也有public、protected、private三种访问级别,也可以具有返回值,const修饰符等参数。

    4.C++11初始化新玩法

    C++11中,支持非静态成员变量在声明时,直接初始化。

    class Time
    {
    public:
    	Time(int hour = 0)
    		:_hour(hour)
    	{
    	}
    
    	int _hour;
    };
    class Date
    {
    public:
    	void Display()
    	{
    		std::cout << _day << std::endl;
    		std::cout << _t._hour << std::endl;
    		std::cout << *_p << std::endl;
    		std::cout << _st << std::endl;
    
    	}
    
    private:
    	int _day = 10;
    	int *_p = new int(2);
    	Time _t = 5;
    	static int _st;
    };
    
    int Date::_st = 6;
    
    
    
    展开全文
  • 初始化链表C++实现

    千次阅读 2016-11-21 21:41:31
    "请输入链表元素,以-1结束" endl; while (input) { cin >> data ; if ( data == - 1 ) { input = false ; } else { current -> data = data ; Node * p = new Node( 0 ); ...
    class List{
    publicvoid init(){}
     private:
     struct Node {
                             int data;
                             Node * next;
                             Node(const int& d) :data(d), next(NULL) {}
                };
     Node * head;//头节点
     }
     void List::init() {
         Node *current = head;
         int data = 0;
         bool input = true;
         cout << "请输入链表元素,以-1结束"<<endl;
         while (input) {
             cin >> data;
             if (data == -1) {
                 input = false;
             }
             else {
                 current->data = data;
                 Node *p = new Node(0);
                 current->next = p;
                 current = current->next;
             }
         }
    展开全文
  • 目录)一、实验目的二、实验环境三、实验过程3.1 数据定义3.2 初始化3.3 输入3.4 输出3.5 全部代码 一、实验目的 使用C++采取后插法创建链表 二、实验环境 gcc 4.9.2 三、实验过程 3.1 数据定义 typedef struct Node...

    一、目的

    使用C++采取后插法创建链表

    二、环境

    gcc 4.9.2

    三、过程

    3.1 数据定义

    typedef struct Node {
    	int data;
    	struct Node *next;
    } Node,*NodeList;
    

    3.2 初始化

    NodeList init(){
        NodeList head = (NodeList)malloc(sizeof(Node));
    	head->next=NULL;
        return head;
    }
    

    3.3 输入

    //输入n个节点的值
    void input(NodeList &head,int n){
        NodeList p,tail;
        //起始头指针与尾指针在一起
    	tail = head;
    	for(int i = 0; i<n; i++) {
            //创建新节点
    		p = (NodeList)malloc(sizeof(Node));
    		scanf("%d",&p->data);
    		p->next = NULL;
            //新节点位于尾指针的后边
    		tail->next = p;
            //更新尾指针的位置
    		tail = p;
    	}
    }
    

    3.4 输出

    void ouput(NodeList &head){
        NodeList p = head->next;
        while(p){
            printf("%d ",p->data);
            p = p->next;
        }
    }
    

    3.5 完整代码

    #include<stdio.h>
    #include<stdlib.h>
    using namespace std;
    
    typedef struct Node {
    	int data;
    	struct Node *next;
    } Node,*NodeList;
    
    NodeList init(){
        NodeList head = (NodeList)malloc(sizeof(Node));
    	head->next = NULL;
        return head;
    }
    
    //输入n个节点的值
    void input(NodeList &head,int n){
        NodeList p,tail;
        //起始头指针与尾指针在一起
    	tail = head;
    	for(int i = 0; i<n; i++) {
            //创建新节点
    		p = (NodeList)malloc(sizeof(Node));
    		scanf("%d",&p->data);
    		p->next = NULL;
            //新节点位于尾指针的后边
    		tail->next = p;
            //更新尾指针的位置
    		tail = p;
    	}
    }
    
    void ouput(NodeList &head){
        NodeList p = head->next;
        while(p){
            printf("%d ",p->data);
            p = p->next;
        }
    }
    
    int main(void){
    	const int n = 5;
    	NodeList head = init();
    	input(head,n);
    	ouput(head);
    	return 0;
    }
    

    运行结果

    展开全文
  • 什么C初始化链表需要二级指针

    千次阅读 2014-08-03 22:33:25
    想要在函数里修改一级指针的指向,就要用2级指针接收,间接修改一级指针内容 只读操作,不修改一级指针的内容,就用1级指针就可以。。。。 如果是一级
    想要在函数里修改一级指针的指向,就要用2级指针接收,间接修改一级指针内容

    只读操作,不修改一级指针的内容,就用1级指针就可以。。。。


    如果函数是一级指针的话,是值传递,并不能改变形参的值。

    展开全文
  • 单链表是一种最简单的链表表示,也叫做线性链表。用它来表示线性表时,用指针表示结点间的逻辑关系。因此单链表的一个存储结点包含两个部分(data 和 next)。... 我们首先需要初始化出一个链表结构程序如下图
  • #include using namespace std; typedef struct Node ... //当输入链表为空时,初始化链表 ListOut1(p1); //此时输出为空? 为什么? 我不是在初始化时在堆中分配的内存 不是可以用吗? system("pause"); }
  • 链表初始化

    千次阅读 2013-04-25 18:36:57
    链表创建是初始化,产生两个疑问 一、为什么要用两个Node指针,把为什么不能把p2->link = p1;p2 = p1;换成plink->link = p1;plink = p1呢? 二、for运行第一次时,p1同时给p2个plink,的原因是什么
  • 1.前言链表是一种非常基础也非常重要的数据结构,在实际中使用非常广泛,也是各种面试里特别容易出现的类型。尤其在各大IT公司的校招中,不管笔试还是面试,链表几乎都是必出现的题型。因此不管从实际工作场景中,...
  • 1.只有一个整数:a = int(input) 2.一行多个整数并用空格分开:a,b = map(int,input().split()) 3.数据较多时可用 列表存储:num = ...4.关于初始化链表: class Node: def __init__(self,x): self.val = x ...
  • 链表初始化

    千次阅读 2017-05-23 21:12:31
    链表初始化时,调用自定义函数init(struct node**h),来传递参数&head的值,即head的地址 这样的目的是改变head的值,从而达到让head指向新创建的节点
  • 我一般常用的带头结点的链表初始化
  • 链表初始化什么要用双重指针】 如: typedef DataType int typedef struct Node{  DataType data;  struct Node *next; }LNode,*PNode,*LinkList;   int Initial(LinkList *h){ //参数为头结点...
  • 链表的创建与初始化

    千次阅读 2019-01-12 16:30:13
    #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; typedef struct student { int a; struct studemt *next; } x;//定义一个结构体 x *Create(int n) ... 将头节点初始化 head=(x)ma...
  • 初始化建立链表的两种方法

    万次阅读 多人点赞 2018-01-14 20:42:00
    方法二是在函数中建立好链表后,然后返回这个链表 #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;malloc.h&gt; typedef int ElemType; typedef struct Node{ //...
  • c语言链表初始化

    千次阅读 2016-07-20 15:07:59
    //链表的长度 int i; //循环开关 int val; //节点的值 PNODE pHead = (PNODE) malloc ( sizeof (NODE)); //造出头结点 if (NULL==pHead) { printf ( "链表动态分配失败!程序终止!\n" ); exit...
  • 首先定义初始条件typedef struct Node{ int val; struct Node *next; }Node, *LinkedList; LinkedList HasHeadNodeIntiListAtEnd(); LinkedList HasHeadNodeIntiListAtStart(); LinkedList ...
  • bin: 就是挂在数组上的链表 TreeNode: 红黑树 capacity: table总容量 MIN_TREEIFY_CAPACITY :64 转化为红黑树table最小大小 TREEIFY_THRESHOLD :8 转化为红黑树的阈值 loadFac...
  • typedef struct LNode{ int data; struct LNode *next; }LinkList; InitList(LinkList *&L) { L=(LinkList *)malloc(sizeof(LinkList));...请问初始化函数的形参L前为什么要加地址符&?去掉为什么会出错?
  • 链表、二叉树、图的建立与初始化

    千次阅读 多人点赞 2019-04-04 23:49:14
    1、链表建立与初始化 建立如下链表 建立一个名为data的txt文件,将此文件放在本程序所在文件夹目录下,文件内容为: #include <stdio.h> #include <stdlib.h> typedef struct LNode { int data...
  • 这样声明函数是不正确的,函数的原意是通过数组初始化链表若链表结点传入的是指针,则并不能创建链表,除非是二维指针即指向指针的指针,或者是指向指针的引用 因为传入的虽然是指针,但是对形参的操作并不能影响...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 262,340
精华内容 104,936
关键字:

初始化链表是什么意思