JAVA数据结构问题:在带头结点的单链表中,查找值为X的结点若找到则删除否则输出NO

 我来答
匿名用户
2013-08-31
展开全部
你要是模拟的话,可以使用数组,查找每个值,存在就删除,不存在就输出No。你又不搞内部代码,模拟实现就可以了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-31
展开全部
package com.link;public class Node<T> {

//前一个节点
private Node<T> prev;//后一个节点
private Node<T> next;

//值
private T value;public Node() {
super();
}public Node(Node<T> prev, Node<T> next, T value) {
super();
this.prev = prev;
this.next = next;
this.value = value;
}public Node<T> getNext() {
return next;
}public void setNext(Node<T> next) {
this.next = next;
}public Node<T> getPrev() {
return prev;
}public void setPrev(Node<T> prev) {
this.prev = prev;
}public T getValue() {
return value;
}public void setValue(T value) {
this.value = value;
}

//是否有上一个节点 或者 下一个节点
public boolean hasNext(){
if(this.next!=null)return true;
return false;
}

public boolean hasPrev(){
if(this.prev!=null)return true;
return false;
}
}
----------------------------------------package com.link;public class LinkList<T> {

//头结点
private Node<T> head;

//构造器
public LinkList() {
head = new Node<T>(null,null,null);
}

public void add(T t){
Node<T> temp = head;
while(temp.hasNext()){
temp = temp.getNext();
}
temp.setNext(new Node<T>(temp,null,t));
}

private Node<T> find(T t){
if(t == null)return null;
if(!head.hasNext())return null;
Node<T> temp = head;
while(temp.hasNext()){
temp = temp.getNext();
if(t.equals(temp.getValue())){
return temp;
}
}
return null;
}

public boolean hasValue(T t){
if(find(t)!=null)return true;
return false;
}

public boolean remove(T t){
Node<T> temp = find(t);
if(temp!=null){
temp.getNext().setPrev(temp.getPrev());
temp.getPrev().setNext(temp.getNext());
temp = null;
return true;
}
return false;
}

//按索引取节点
public T get(int index){
if(!head.hasNext())return null;
Node<T> temp = head;
int i=0;
for(;i<=index&&temp.hasNext();i++){
temp = temp.getNext();
}
if(i == index+1)return temp.getValue();
return null;
}public static void main(String[] args) {
LinkList<String> list = new LinkList<String>();
for(int i=0;i<20;i++){
list.add("String"+i);
}
//以下打印只为显示结果,正常情况下不会这样打印
Node<String> temp = list.head;
int i = 0;
while(temp.hasNext()){
temp = temp.getNext();
System.out.println("Value "+i+":"+temp.getValue());
i++;
}

if(list.remove("String10")){
System.out.println("SUCCESS");
}else{
System.out.println("NO");
}

temp = list.head;
i=0;
while(temp.hasNext()){
temp = temp.getNext();
System.out.println("Value "+i+":"+temp.getValue());i++;
}
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式