给定索引位置但从结尾开始,从链表中删除节点

时间:2016-05-13 03:15:45

标签: python algorithm linked-list

在我从面试问题中学习算法的过程中,我发现这非常有趣。

基本上问题是要求删除索引处的节点,但是从链表的末尾开始。并在一个循环中。

我想你需要2个循环,一个知道列表的长度,另一个是删除节点,从最后开始,但后来我认为链表是顺序的,所以一个循环应该有效。

您将如何以最简单的方式解决这个问题?我正在尝试使用python;你可以创建一个简单的列表,并在4行中进行操作;但如果你正在接受采访,他们通常会希望你“不用手语”而不使用语言快捷方式。

1 个答案:

答案 0 :(得分:0)

struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
    struct ListNode *temp = head;
    int length = 0;
while(temp->next!=NULL){
    temp = temp->next;
    length++;
}
temp = head;
while(length!= n+1){
    temp = temp->next;
    length--;
}
temp->next = temp->next->next;
return head;

}

编辑:    最初我使用第一个while循环计算链表的长度,然后我递减该长度,直到我使用第二个while循环到达上述节点之前的节点,然后我只是删除节点并返回头; < / p>