如何定义一个c++链表
时间: 2023-07-04 12:24:15 浏览: 58
在 C++ 中,可以通过定义一个结构体来实现链表的节点,如下所示:
```c++
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
```
上述代码定义了一个链表节点,包含一个整数值 `val` 和一个指向下一个节点的指针 `next`。其中,`ListNode(int x)` 是构造函数,用于初始化节点的值和指针。
然后,可以通过定义一个指向链表头节点的指针来表示整个链表,如下所示:
```c++
ListNode* head = NULL;
```
上述代码定义了一个指向链表头节点的指针 `head`,初始值为 NULL。
接下来,可以通过不断添加新节点的方式来构建链表,如下所示:
```c++
ListNode* node1 = new ListNode(1);
ListNode* node2 = new ListNode(2);
ListNode* node3 = new ListNode(3);
head = node1;
node1->next = node2;
node2->next = node3;
```
上述代码创建了三个节点 `node1`、`node2`、`node3`,并将它们链接起来构成了一个链表。其中,`head` 指向链表的头节点 `node1`,`node1->next` 指向链表的第二个节点 `node2`,`node2->next` 指向链表的第三个节点 `node3`,`node3->next` 为 NULL,表示链表结束。
需要注意的是,在使用完链表后,需要手动释放每个节点的内存,避免内存泄漏,如下所示:
```c++
ListNode* curr = head;
while (curr) {
ListNode* next = curr->next;
delete curr;
curr = next;
}
```
上述代码使用一个指针 `curr` 遍历整个链表,并依次释放每个节点的内存。在释放每个节点之前,需要先记录下一个节点的指针 `next`,避免在释放当前节点后无法访问下一个节点。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)