我正在学习java中的链接列表,但我坚持以下
删除Hobnobs之前:波旁威士忌,脆饼,Hobnobs,奥利奥斯
删除Hobnobs后:bourbon,shortbread,oreos
我想创建一个删除方法,删除中间节点“Hobnobs”。
到目前为止,我已经得到了这个 public class Biscuit {
private BiscuitNode first;
public Biscuit( )
{
this.first=null;
}
public BiscuitNode getFirst() {
return first;
}
public void insert(BiscuitNode first) {
this.first = first;
}
public void deleteFirst()
{
this.first.setSucc(this.first);
}
public void delete(String BiscuitName)
{
Hobnobs是“BiscuitNode secondLast=new BiscuitNode("Hobnobs", last);
”
答案 0 :(得分:1)
使用当前节点上的getSucc()在循环中遍历节点链。然后,一旦找到匹配的节点,使其前任指向其后继者。例如。如果我们想从以下列表中删除节点C:
A--->B--->C--->D
becomes
A--->B--->D
你应该能够搞清楚。
答案 1 :(得分:1)
向BiscuitNode
添加递归方法,可能命名为deleteYourSuccessorIfItMatches(String pattern)
,检查它的后继是否与模式匹配,如果匹配,则当前节点的后继将设置为后继的后继者,否则该方法在后继者上递归调用。调用方法Biscuit.delete(String pattern)
必须在first
节点上执行相同的操作。