本篇使用PowerShell语法演示单链表的反转
思路:
1.从第二个结点开始,把后一个结点的指针指向前一个结点
2.第一个结点的Next节点要置空,否则会出现环。
具体如下图
Class LinkedNode { [LinkedNode]$Next; [Object]$Value; } # # 遍历链表 # function Foreach-Node { param([LinkedNode]$Node) while($Node -ne $null){ $Node $Node=$Node.Next } } # # 打印链表 # function Print-Node { param([LinkedNode]$Node) $values = Foreach-Node -Node $Node | Select -ExpandProperty Value Write-Host ($values -join ',') } # # 将数组转换成链表 # function ConvertFrom-Array { param($Array) if(($Array -eq $null) -or ($Array.length -eq 0)) { return $null } $header = [LinkedNode]::new() $header.Value = $Array[0] $node = $header for ($i = 1; $i -lt $Array.length; $i++) { $node.Next = [LinkedNode]::new() $node.Next.Value = $Array[$i] $node = $node.Next } return $header } # # 反转链表 # function Reverse-Node { param([LinkedNode]$Node) if(($Node -eq $null) -or ($Node.Next -eq $null)){ return $Node } [LinkedNode]$pre=$Node [LinkedNode]$current = $Node.Next $pre.Next = $null while($current -ne $null){ $temp = $current.Next $current.Next = $pre $pre = $current $current = $temp } return $pre } # # 测试 # Write-Host "原链表:" $node = ConvertFrom-Array @(1..10) Print-Node -Node $node Write-Host "反转后:" $newNode = Reverse-Node -Node $node Print-Node -Node $newNode
测试输出
原链表:
1,2,3,4,5,6,7,8,9,10
反转后:
10,9,8,7,6,5,4,3,2,1
本文链接: https://www.pstips.net/reverse-linkednode.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!