cur->next = cur->next->next;和cur=cur->next;有什么区别
时间: 2023-06-10 21:03:24 浏览: 180
这两个操作有很大的区别。cur->next = cur->next->next; 的作用是将 cur 的下一个节点指针指向下下个节点,相当于删除了当前节点的下一个节点;而 cur=cur->next; 的作用是将 cur 指向它的下一个节点,相当于向链表的下一个节点移动了一个位置。
相关问题
HeadNode->next = NULL;
`HeadNode->next = NULL;` 是链表初始化的一种方式,它的作用是将链表的头节点的 next 指针指向 NULL,表示链表为空链表。
在使用链表时,我们通常会定义一个头节点(也称为哨兵节点),它不存储任何数据,只作为链表的起始位置,方便链表的操作。当链表为空时,头节点的 next 指针指向 NULL。
下面是一个简单的链表结构体定义,其中定义了头节点:
```c++
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
struct LinkedList {
ListNode *head; // 头节点
// 构造函数,初始化头节点
LinkedList() {
head = new ListNode(0);
head->next = NULL;
}
// 在链表头部插入节点
void insert(int val) {
ListNode *newNode = new ListNode(val);
newNode->next = head->next;
head->next = newNode;
}
// 输出链表节点值
void print() {
ListNode *cur = head->next;
while (cur) {
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
}
};
```
在 LinkedList 的构造函数中,我们初始化了头节点,并将头节点的 next 指针指向 NULL。这样,当我们创建一个空链表时,头节点的 next 指针就指向 NULL,表示链表为空。在 insert 函数中,我们通过表头插入法在链表头部插入节点,因为头节点的 next 指针一开始指向 NULL,所以第一次插入的节点就成为了链表的第一个节点。在 print 函数中,我们从头节点的 next 指针开始遍历链表,输出每个节点的值。
cur->next = cur->next->next;和cur=cur->next;为什么有区别
这两个语句有很大的区别。
第一句是将当前节点的下一个节点删除,并将当前节点的next指向下一个节点的next。这就导致当前节点和原来的下一个节点既可以被访问,也可以被修改,因为当前节点的next指向了下下一个节点。
而第二句只是单纯地将当前节点指针移动到下一个节点,不会对链表的结构做出任何修改,因此不会影响到链表中其他节点的访问和修改。
因此,这两个语句的作用是不同的,使用时需要根据具体的逻辑需求选择合适的语句。