如何改进我的链表练习?

时间:2013-06-09 10:26:43

标签: java algorithm singly-linked-list

我正在进行“算法第四版”一书的练习1.3.26。

  

/ **    * 1.3.26编写一个带有链表的方法remove()    *和一个字符串键作为参数并删除所有节点
   *在列表中将键作为其项目字段    *
   * java LinkListRemove到
   *要成为或将要去死    * ^ z / ^ d
   *删除前:
   *要成为或将要去死    *删除结果:
   *是或去死    *尺寸:4
   *
   * /

我的实施工作在LinkListRemove,而且有效。但我觉得它不优雅。是否可以只使用单链表的一次遍历?

我的思路分为两个步骤:

  1. 从第一个删除连续密钥,处理后,链接列表以非关键节点开头或为空。
  2. 在第一个节点之后删除匹配的节点,现在链接列表以非关键节点开头或为空。
  3. 如果您想要运行它,则需要this jar file

1 个答案:

答案 0 :(得分:0)

我从您的问题中了解到,您希望从列表中删除与给定键匹配的所有元素。

是的,这可以在列表的一次迭代中完成。以下步骤应该有所帮助:

Node temp =null;
if(key != null && first != null){
    if(key.equals(first.item)){               
        temp = first;
        first = first.next;
        temp.link=null;
        temp =null;
        return;
    }
    else{
        Node tempIt = first.link;
        temp = first;
        while(tempIt != null)
            {
                if(key.equals(tempIt.item)){
                    temp.link = tempLt.link;
                    tempLt.link = null;
                    tempLt = null;
                }
                temp = tempLt;
                tempLt= tempLt.next;
            }
        }
}   
return;