Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么是;列表指针->;左指针->;rightPointer=newNodePtr&引用;做_C++_Doubly Linked List - Fatal编程技术网

C++ 什么是;列表指针->;左指针->;rightPointer=newNodePtr&引用;做

C++ 什么是;列表指针->;左指针->;rightPointer=newNodePtr&引用;做,c++,doubly-linked-list,C++,Doubly Linked List,这是我第一次遇到这种类型的指针。它指向然后再指向,这意味着什么?我在一个双链表程序中遇到了这个问题 listPointer->leftPointer->rightPointer = newNodePtr; 它指向然后再指向,这意味着什么 代码暗示有一种 struct Node { Node* leftPointer; Node* rightPointer; }; 它递归地用于构建树 listPointer声明为 Node* listPointer; Node*

这是我第一次遇到这种类型的指针。它指向然后再指向,这意味着什么?我在一个双链表程序中遇到了这个问题

listPointer->leftPointer->rightPointer = newNodePtr;
它指向然后再指向,这意味着什么

代码暗示有一种

struct Node {
    Node* leftPointer;
    Node* rightPointer;
};
它递归地用于构建树

listPointer
声明为

Node* listPointer;
 Node* newNodePtr;
newNodePtr
声明为

Node* listPointer;
 Node* newNodePtr;
棘手的部分将是管理所有这些指针是否已正确分配内存以在何时指向

listPointer->leftPointer->rightPointer = newNodePtr;
在运行时执行


在为问题添加标签时考虑双链接列表,因此:

我更喜欢
结构及其成员的不同命名

struct DoubleLinkedListItem {
    DoubleLinkedListItem* previous;
    DoubleLinkedListItem* next;
};

为清楚起见。

可能用于从链接列表中删除
列表指针
,如下所述:

listPointer->leftPointer->rightPointer = newNodePtr;
newNodePtr->rightPointer = listPointer

这可能是插入新元素的一部分。如果操作正确,则只需了解要插入元素的位置之后的元素以及要插入的元素。另一个元素可以通过以下链接获得

             listPtr
                |
                v
----------  ----------
|        |->|        |
| Node L |  |  Node  |
|        |<-|        |
----------  ----------

newNodePtr
   |
   v
----------
|        |
| Node N |
|        |
----------
使前面的元素指向新元素

               newNodePtr    listPtr
                  |             |
                  v             v
----------    ----------    ----------
|        |--->|        |    |        |
| Node L |    | Node N |    |  Node  |
|        |<-| |        |  |-|        |
----------  | ----------  | ----------
            |             |
            |-------------|
             newNodePtr  listPtr
                |           |
                v           v
----------  ----------  ----------
|        |->|        |  |        |
| Node L |  | Node N |  |  Node  |
|        |<-|        |<-|        |
----------  ----------  ----------
因此新元素指向前面的元素

               newNodePtr    listPtr
                  |             |
                  v             v
----------    ----------    ----------
|        |--->|        |    |        |
| Node L |<---| Node N |    |  Node  |
|        |<-| |        |  |-|        |
----------  | ----------  | ----------
            |             |
            |-------------|
             newNodePtr  listPtr
                |           |
                v           v
----------  ----------  ----------
|        |->|        |->|        |
| Node L |  | Node N |  |  Node  |
|        |<-|        |<-|        |
----------  ----------  ----------
所以下面的元素指向新元素

               newNodePtr    listPtr
                  |             |
                  v             v
----------    ----------    ----------
|        |--->|        |    |        |
| Node L |    | Node N |    |  Node  |
|        |<-| |        |  |-|        |
----------  | ----------  | ----------
            |             |
            |-------------|
             newNodePtr  listPtr
                |           |
                v           v
----------  ----------  ----------
|        |->|        |  |        |
| Node L |  | Node N |  |  Node  |
|        |<-|        |<-|        |
----------  ----------  ----------
所以新元素指向下面的元素

               newNodePtr    listPtr
                  |             |
                  v             v
----------    ----------    ----------
|        |--->|        |    |        |
| Node L |<---| Node N |    |  Node  |
|        |<-| |        |  |-|        |
----------  | ----------  | ----------
            |             |
            |-------------|
             newNodePtr  listPtr
                |           |
                v           v
----------  ----------  ----------
|        |->|        |->|        |
| Node L |  | Node N |  |  Node  |
|        |<-|        |<-|        |
----------  ----------  ----------
newNodePtr列表ptr
|           |
v v
----------  ----------  ----------
|        |->|        |->|        |
|节点L | |节点N | |节点|
||如果不知道
listPointer
的类型并查找其文档或类定义(例如使用
class
struct
关键字),就无法真正理解这一点。