我想从列表中删除k号元素。我会像下面那样(伪代码)
delete(L,k)
x <- L.head
i <- 1
while(i < k-1 AND x.next != NULL)
x<-x.next
i <- i+1
if(i = k-1 AND x.next != NULL)
if(x.next.next != NULL)
x.next <- x.next.next
else if(x.next.next = NULL)
x.next = NULL
我的目的是:如果k是最后一个,那么删除k-1.next。如果k不是最后一个,那么使k-1.next指向k + 1。这是好主意吗?
答案 0 :(得分:2)
您的链接列表删除方法似乎大多正确。
你为什么要算一个?你想让头部成为一个虚拟节点,它不包含任何值(那么你可以保留一个空列表),如果是这样的话:
i=0
while(i <= k && x.next != null)
然后当你想删除第一个项目(k = 1)时,while循环将执行一次。否则使用
while(i = k && x.next !=null)
同样在第一个if语句中将k-1
更改为k
。
我不知道你为什么使用IF ELSE,因为如果x.next.next为null,你只是分配null。
问题在于您的计数器值与删除值。请尝试删除列表中的第一项。