面试题 单向链表(无头结点)一个指针指向其中的一个结点,如何删除这个结点?
2018-02-09 21:26
627 查看
这也是自己碰到的比较新鲜有意思的题目,在解题的时候容易固定思维,不知道如何下手
所以最后也没有做出来,所以记录下来来告诉自己不能固定思维
一开始我老是在想怎么才能找到这个节点的前一个结点和后一个结点,想了挺久想不来
后来上网才知道:
首先我们知道什么就是这个指针指向的结点,那我们就可以知道下一个指针,知道了下一个
指针,我们如果把这个指针的节点值交还给下一个指针的结点值,然后删除下一个指针,那
我们不就是删除了这个节点吗
将这个结点复制成下一个结点的值,然后删除下一个结点
node *p;
node *q;
q = p->next;
p.data = q.data;
p->next = q->next;
free(q);
这就行了,所以我们不要觉得不可能,要多从已知的条件出发,然后多分析分析,相信就会有答案了。
所以最后也没有做出来,所以记录下来来告诉自己不能固定思维
一开始我老是在想怎么才能找到这个节点的前一个结点和后一个结点,想了挺久想不来
后来上网才知道:
首先我们知道什么就是这个指针指向的结点,那我们就可以知道下一个指针,知道了下一个
指针,我们如果把这个指针的节点值交还给下一个指针的结点值,然后删除下一个指针,那
我们不就是删除了这个节点吗
将这个结点复制成下一个结点的值,然后删除下一个结点
node *p;
node *q;
q = p->next;
p.data = q.data;
p->next = q->next;
free(q);
这就行了,所以我们不要觉得不可能,要多从已知的条件出发,然后多分析分析,相信就会有答案了。
相关文章推荐
- 1.01一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?
- 一个单向链表,不知道头节点,一个指针指向其中一个节点,问如何删除这个指针指向的节点?
- 给定一个单向链表,目前已经有一个指针,指向某一个节点(记作A),现在要删除这个节点A,如何操作。
- 有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
- 在一个无头指针的单链表中,删除指针p所指向的结点
- 有一个单项的链表,在没有头结点的情况下,只知道有一个指向结点B的指针p,假设这个结点B不是尾结点,删除该节点B。
- 面试题11 删除单向链表中的一个元素 但是只提供这个元素的操作权
- 面试题:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。
- 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点
- 假设在长度大于1的循环链表中,即无头结点也无头指针,s为指向链表中的某个结点的指针,试编写算法删除结点s的前驱结点
- 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。
- 设一个没有头结点指针的单链表。一个指针指向此单链表中间的一个结点(不是第一个,也不是最后一个结点),将该结点从单链表中删除,要求时间复杂度O(1)。
- 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。
- 13\给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点,
- 链表面试题(一)---删除一个无头单链表的非尾结点
- 给定链表的头指针和一个结点指针,在O(1)时间删除该结点
- 无头结点的单链表删除一个中间结点
- 给定链表的头指针和一个结点指针,在O(1) 时间删除该结点
- 给定链表的头指针和一个结点指针,在O(1)时间删除该结点。
- (转)问题:假设一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(既不是第一个,也不是最后一个节点),请将该节点从单链表中删除。