class PersonNode(val pno:Int,val pname:String){
val no:Int=pno
var name: String = pname
var next:PersonNode=null //下节点,默认null
var pre:PersonNode=null //前一个节点,默认null
}
class DoubleLinkList{
// 头节点
val head:PersonNode=new PersonNode(0,null)
//添加节点
def add(personNode:PersonNode)={
var tmp=head
breakable {
while (true) {
if (tmp.next == null) {
break()
}
tmp = tmp.next
}
}
//此时tmp就是节点末尾
tmp.next=personNode
personNode.pre=tmp
}
//遍历
def show():Unit={
if(head.next==null){
println("this linkList is empty!")
return
}
var tmp=head.next
breakable {
while (true) {
if (tmp == null) {
break()
}
printf("no:%d\tname:%s\n", tmp.no, tmp.name)
tmp = tmp.next
}
}
}
//更新节点
def modify(personNode:PersonNode):Unit={
if(head.next==null){
println("this linkList is empty!")
return
}
var tmp=head.next
var flag=false //标志目标节点是否存在
breakable {
while (true) {
if (tmp == null) {
break()
}
if (tmp.no == personNode.no) {
flag = true
break()
}
tmp = tmp.next
}
}
if(flag){
//此时tmp就是目标节点
tmp.name=personNode.name
}else{
println("the target node is not exits!")
}
}
//del删除节点方法一
def del1(personNode: PersonNode):Unit={
if(head.next==null){
println("this linkList is empty!")
return
}
var tmp=head
var flag=false//标志目标节点是否存在
breakable {
while (true) {
if (tmp.next == null) {
break()
}
if (tmp.next.no == personNode.no) {
flag = true
break()
}
tmp = tmp.next
}
}
if(flag){
//此时tmp的next就是目标节点
tmp.next=tmp.next.next
if(tmp.next!=null) tmp.next.pre=tmp
}else{
println("the target node is not exits!")
}
}
//删除方法二
def del2(personNode: PersonNode):Unit={
if(head.next==null){
println("this linkList is empty!")
return
}
var tmp=head.next
var flag=false //标志目标节点是否存在
breakable {
while (true) {
if (tmp == null) break()
if (tmp.no == personNode.no) {
flag = true
break()
}
tmp = tmp.next
}
}
if(flag){
//此时tmp就是目标节点
tmp.pre.next=tmp.next
if(tmp.next!=null) tmp.next.pre=tmp.pre
}else{
println("the target node is not exits!")
}
}
}