b******4 发帖数: 8 | 1 如果只知道这个节点的pointer,没有前一个节点的,这个节点又是最后一个,怎么删
啊。谢谢! |
f*********i 发帖数: 197 | 2 public static LinkList deleteLastIndex(LinkList root)
{
if (root == null || root.next == null)
return null;
LinkList returnRoot = root, nextNode = root.next;
while (nextNode.next != null)
{
nextNode = nextNode.next;
root = root.next;
}
root.next = null;
return returnRoot;
} |
b******4 发帖数: 8 | 3 我是说不知道root,不能从头去找,只知道最后一个节点的指针
【在 f*********i 的大作中提到】 : public static LinkList deleteLastIndex(LinkList root) : { : if (root == null || root.next == null) : return null; : LinkList returnRoot = root, nextNode = root.next; : while (nextNode.next != null) : { : nextNode = nextNode.next; : root = root.next; : }
|
f*********i 发帖数: 197 | |
N**********p 发帖数: 408 | 5 这个。。。麻烦了。。。
要是中间的点,还可以用后面的点replace这个,但是这是最后一个点,直接把这个点
的值付NULL可以吗?
【在 b******4 的大作中提到】 : 如果只知道这个节点的pointer,没有前一个节点的,这个节点又是最后一个,怎么删 : 啊。谢谢!
|
w****x 发帖数: 2483 | |
s*********r 发帖数: 609 | 7 void deleteLast(Node& * pLast)
{
if(NULL == pLast || NULL != pLast -> next)
return;
free(pLast);
pLast = NULL;
}
【在 w****x 的大作中提到】 : 没法删,你不是自己想出来的题吧
|
w****x 发帖数: 2483 | 8
传引用啊, 太痞了
【在 s*********r 的大作中提到】 : void deleteLast(Node& * pLast) : { : if(NULL == pLast || NULL != pLast -> next) : return; : : free(pLast); : pLast = NULL; : }
|
b***i 发帖数: 3043 | 9 首先,你是想说Node *& pLast吧?
第二,如果一个Node *A指向最后一个node
那么,我p=A
然后deleteLast(p),还是完成不了任务。指向这个最后的node的指针可能很多。所以
这个问题是不可完成的。
【在 s*********r 的大作中提到】 : void deleteLast(Node& * pLast) : { : if(NULL == pLast || NULL != pLast -> next) : return; : : free(pLast); : pLast = NULL; : }
|
G**********s 发帖数: 70 | 10 同意。
这个是不可能完成的。
【在 b***i 的大作中提到】 : 首先,你是想说Node *& pLast吧? : 第二,如果一个Node *A指向最后一个node : 那么,我p=A : 然后deleteLast(p),还是完成不了任务。指向这个最后的node的指针可能很多。所以 : 这个问题是不可完成的。
|
i*********7 发帖数: 348 | 11 crack coding interview上说过了。这种情况下是无解的。不用想了。。 |
a********m 发帖数: 15480 | 12 也还是没用。参数必须是链表前一个节点这个要求太不正常,如果是随便一个临时变量
就不对。
题目没说是single还是double.
【在 w****x 的大作中提到】 : : 传引用啊, 太痞了
|
f**********2 发帖数: 2401 | 13 只知道最后一个节点,如果是单链表,无法删除。删除实质上是隔离前一个节点和这个
节点的link,如果不能得到这个link,没法操作 |