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
关键字),就无法真正理解这一点。