将单链表中第i个结点和其后继结点交换位置,要求只修改指针
时间: 2023-03-25 15:01:23 浏览: 96
好的,这是一个关于单链表的问题。我们可以通过修改指针来实现将第i个结点和其后继结点交换位置。具体的实现方法是,先找到第i个结点和其前驱结点,然后将前驱结点的next指针指向后继结点,将第i个结点的next指针指向后继结点的后继结点,最后将后继结点的next指针指向第i个结点。这样就完成了交换位置的操作。
相关问题
帮我用c语言写一个将单链表中第i个结点和其后继结点交换位置,要求只修改指针的代码
好的,以下是代码:
```c
void swapNode(ListNode* head, int i) {
if (head == NULL || head->next == NULL) {
return;
}
ListNode* p = head;
int j = 1;
while (p->next != NULL && j < i) {
p = p->next;
j++;
}
if (j != i) {
return;
}
ListNode* q = p->next;
if (q == NULL) {
return;
}
p->next = q->next;
q->next = p;
head = q;
}
```
希望能够帮到你!
帮我用c语言写一个将第i个结点和其后继结点交换指针的代码
好的,以下是代码:
```c
void swapNode(Node* head, int i) {
Node* p = head;
for (int j = 1; j < i && p != NULL; j++) {
p = p->next;
}
if (p == NULL || p->next == NULL) {
return;
}
Node* q = p->next;
p->next = q->next;
q->next = p;
if (i == 1) {
head = q;
} else {
Node* pre = head;
for (int j = 1; j < i - 1; j++) {
pre = pre->next;
}
pre->next = q;
}
}
```
希望能对您有所帮助!
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)