C++里创建链表时Node是啥意思?Node需要在函数头定义么?要的话怎么定义?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++里创建链表时Node是啥意思?Node需要在函数头定义么?要的话怎么定义?相关的知识,希望对你有一定的参考价值。

1、Node只是一个节点类,里面包含的是用户创建一个节点时储存的信息。

2、需要定义,解答过程如下所示:

class Node

public:
int data;
Node *next;

C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

扩展资料:

C++的工作原理:

1、C++语言的程序因为要体现高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。

2、开发过程中,以解释性的逐条语句执行方式来进行调试,以编译型的脱离开发环境而启动运行的方式来生成程序最终的执行代码。

3、生成程序是指将源码(C++语句)转换成一个可以运行的应用程序的过程。如果程序的编写是正确的,那么通常只需按一个功能键,即可搞定这个过程。该过程实际上分成两个步骤。

参考资料来源:百度百科-C++

参考技术A Node只是一个节点类,里面包含的是用户创建一个节点时储存的信息。
eg:
class Node

public:
int data;
Node *next;

这里data就是你要存储的整型数据,next是Node类型的指针,它存储的是xia一个Node类型数据的地址。根据你自己设定的作用域,可以设置成全局的。当然也可以设置为局部的。不过一般都设成全局的。追问

你写的这个例子中我可不可以把Node换成其他的比如STU:

eg:
class STU

public:
int data;
STU *next;

可以这样写么?还是必须要用Node

追答

当然可以,因为Node只是个类名,随便叫什么阿猫阿狗的都行,不过你别非主流的叫 int ,float的就行。

本回答被提问者和网友采纳
参考技术B #include <iostream>
using namespace std;
class Node

public:
int data;

Node *next;

void printNode()


cout << Node.data << endl;

;
参考技术C 北漂的心酸,公众号,最新node.js从入门到精通及服务器搭建课程 参考技术D 为什么不把Node声明为结构体了?

指针在建立链表时的应用

btypedef struct Node
{
    int elem;
    struct node *next;
}node,*LinkList;

 

对于LinkList L: L是指向定义的node结构体的指针,可以用->运算符来访问结构体成员,即L->elem,而(*L)就是个Node型的结构体了,可以用点运算符访问该结构体成员,即(*L).elem;

对于LinkList *L:L是指向定义的Node结构体指针的指针,所以(*L)是指向Node结构体的指针,可以用->运算符来访问结构体成员,即(*L)->elem,当然,(**L)就是Node型结构体了,所以可以用点运算符来访问结构体成员,即(**L).elem;

在链表操作中,我们常常要用链表变量作物函数的参数,这时,用LinkList L还是LinkList *L就很值得考虑深究了,一个用不好,函数就会出现逻辑错误,其准则是:

如果函数会改变指针L的值,而你希望函数结束调用后保存L的值,那你就要用LinkList *L,这样,向函数传递的就是指针的地址,结束调用后,自然就可以去改变指针的值;

而如果函数只会修改指针所指向的内容,而不会更改指针的值,那么用LinkList L就行了;

下面说个具体实例吧

#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;
typedef struct Node
{
    ElemType elem;
    struct Node *next;
}Node, *LinkList;

//初始化链表,函数调用完毕后,L会指向一个空的链表,即会改变指针的值,所以要用*L
void InitList(LinkList *L)
{
    *L = (LinkList)malloc(sizeof(Node));
    (*L)->next = NULL;
}

//清空链表L,使L重新变为空链表,函数调用完后不会改变指针L的值,只会改变指针L所指向的内容(即L->next的值)
void ClearList(LinkList L)
{
    LinkList p;
    while(p = L->next)
        free(p);
}

//销毁链表L,释放链表L申请的内存,使L的值重新变为NULL,所以会改变L的值,得用*L
void DestroyList(LinkList *L)
{
    LinkList p;
    while(p = (*L)->next )
        free(p);
    free(*L);
    *L = NULL;
}

int main()
{
    LinkList L=NULL;
    InitList(&L);
    ClearList(L);
    DestroyList(&L);
    return 0;
}
LinkList L  定义了一个LinkList的对象,叫L
LinkList *L 定义了一个可以指向LinkList对象的指针,叫L
(*L).elem   指针L指向的对象的成员变量elem,与L->next等价
L.elem      对象L的成员变量elem
L->next     指针L指向的对象的成员变量next
(*L)->next       指针L指向的对象指向的对象的成员变量next

技术分享图片

技术分享图片





以上是关于C++里创建链表时Node是啥意思?Node需要在函数头定义么?要的话怎么定义?的主要内容,如果未能解决你的问题,请参考以下文章

指针在建立链表时的应用

创建链表的同时自动完成结点数据排序

C++链表:节点创建函数

双向链表无限循环? [关闭]

(C++)自定义链表并写入

VHDL顶层原理图里输出信号仿真时出现Node missing source是啥意思?好像是输出信号里的定义有点问题