CShap 链表交换指针交换链表的节点 源代码
时间: 2023-11-03 07:59:50 浏览: 80
SOAP教程C++CSHAP
下面是C#语言中交换两个链表节点的代码示例:
```
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int x) { val = x; }
}
public class Solution
{
public ListNode SwapNodes(ListNode head, int k)
{
if (head == null) return null;
int len = 0;
ListNode cur = head;
while (cur != null)
{
len++;
cur = cur.next;
}
ListNode node1 = null, node2 = null;
cur = head;
int count = 1;
while (cur != null)
{
if (count == k) node1 = cur;
if (count == len - k + 1) node2 = cur;
count++;
cur = cur.next;
}
int temp = node1.val;
node1.val = node2.val;
node2.val = temp;
return head;
}
}
```
上述代码中,我们定义了一个`ListNode`类,表示链表节点。其中,`val`字段表示该节点的值,`next`字段表示该节点的后继节点。
接着,我们定义了一个`Solution`类,其中包含一个`SwapNodes`方法,用于交换链表中第`k`个节点和倒数第`k`个节点。该方法接收两个参数:`head`表示链表的头节点,`k`表示要交换的节点位置。
在`SwapNodes`方法内部,我们首先计算出链表的长度`len`。接着,我们分别用`node1`和`node2`表示待交换的两个节点。具体来说,我们遍历链表,当遍历到第`k`个节点时,将其赋值给`node1`;当遍历到倒数第`k`个节点时,将其赋值给`node2`。
最后,我们交换`node1`和`node2`的值,并返回链表的头节点`head`。
阅读全文