单链表,删除k元素

时间:2014-02-23 13:27:53

标签: algorithm list pseudocode

我想从列表中删除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。这是好主意吗?

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。

问题在于您的计数器值与删除值。请尝试删除列表中的第一项。