线性表)编写一个算法来交换单链表中指针P所指结点与其后继结点,HEAD是该链表的头指针,P指向该链表中某一结点。用c语言写完整代码
时间: 2024-02-18 08:03:13 浏览: 78
链表的实现及应用(含选做题)
5星 · 资源好评率100%
下面是交换单链表中指针P所指结点与其后继结点的C语言代码实现:
```c
typedef struct ListNode {
int val;
struct ListNode* next;
} ListNode;
void swapNode(ListNode* head, ListNode* p) {
if (p == NULL || p->next == NULL) {
return; // P所指结点为尾结点,无法交换
}
ListNode* pre = head;
ListNode* cur = head->next;
while (cur != NULL) {
if (cur == p) {
break; // 找到P所指结点
}
pre = cur;
cur = cur->next;
}
ListNode* next = p->next;
p->next = next->next;
next->next = p;
pre->next = next;
next->next = p;
}
```
注意,该代码需要先定义一个名为ListNode的结构体,包含int类型的val和指向下一结点的指针next。另外,需要注意链表头结点head不包含实际数据,只是为了方便操作而存在的。
阅读全文