求Java中实现链表的方法! class A{ public A a = null; public A(class a_){ a = a_; }} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 很简单,以下是书上的代码:链表类:public class Link { private Object element; private Link next; Link(Object it,Link nextval) { element = it; next = nextval;} Link(Link nextval) {next = nextval;} Link next(){return next;} Link setNext(Link nextval) { return next = nextval;} Object element() {return element;} Object setElement(Object it) {return element = it;}}实现对链表操作的,你可以继承添加更多的方法:public class LList implements List{ private Link head; private Link tail; protected Link curr; LList(int sz){setup();} LList() {setup();} private void setup() { tail = head = curr = new Link(null); } public void clear() { head.setNext(null); curr = tail = head; } public void insert(Object it){ curr.setNext(new Link(it,curr.next())); if(tail == curr) tail = curr.next(); } public void append(Object it) { tail.setNext(new Link(it,null)); tail = tail.next(); } public Object remove(){ if(! isInList()) return null; Object it = curr.next().element(); if(tail == curr.next()) tail = curr; curr.setNext(curr.next().next()); return it; } public void setFirst(){ curr = head; } public void next() { if(curr != null) curr = curr.next(); } public void prev() { if((curr != null) || (curr == head)) { curr = null; return; } Link temp = head; while((temp != null) && (temp.next() != curr)) temp = temp.next(); curr = temp; } public int length(){ int n = 0; for(Link temp = head.next();temp != null;temp = temp.next()) n++; return n; } public void setPos(int pos) { curr = head; for(int i = 0;(curr != null) && (i < pos);i++) curr = curr.next(); } public void setValue(Object it){ Assert.notFalse(isInList(),"Error"); curr.next().setElement(it); } public Object currValue() { if(! isInList()) return null; return curr.next().element(); } public boolean isEmpty() { return head.next() == null; } public boolean isInList(){ return (curr != null) && (curr.next() != null); } public void print(){ if(isEmpty()) System.out.println("()"); else{ System.out.print("("); for(setFirst();isInList();next()) System.out.print(currValue() + " "); System.out.println(")"); } }} 问一个JAVA泛型问题 udp 抛出ava.lang.IllegalArgumentException异常 如何在JFrame中打开SWT的dialog? JAVA如何打开影音文件? 一段关于Java文件删除的代码,求教几个对于你们来说非常简单的问题,望各位高手帮忙! 不解System.in的问题 关于弹出对话框的问题 如何获得网页的更新时间? 为什么java后会这样,带参数怎么弄阿 为什么java rmi的helloworld程序不用生成stub也能运行 为什么从mySQL官方网站下载的MySQL Connector/J 不能用? 在线求救,jBuilder的问题,很简单哦
链表类:
public class Link {
private Object element;
private Link next;
Link(Object it,Link nextval)
{ element = it; next = nextval;}
Link(Link nextval)
{next = nextval;}
Link next(){return next;}
Link setNext(Link nextval)
{ return next = nextval;}
Object element()
{return element;}
Object setElement(Object it)
{return element = it;}
}
实现对链表操作的,你可以继承添加更多的方法:
public class LList implements List{
private Link head;
private Link tail;
protected Link curr; LList(int sz){setup();}
LList() {setup();} private void setup()
{
tail = head = curr = new Link(null);
}
public void clear() {
head.setNext(null);
curr = tail = head;
}
public void insert(Object it){
curr.setNext(new Link(it,curr.next()));
if(tail == curr)
tail = curr.next(); }
public void append(Object it) {
tail.setNext(new Link(it,null));
tail = tail.next();
}
public Object remove(){
if(! isInList()) return null;
Object it = curr.next().element();
if(tail == curr.next()) tail = curr;
curr.setNext(curr.next().next());
return it;
}
public void setFirst(){
curr = head; }
public void next() {
if(curr != null) curr = curr.next();
}
public void prev() {
if((curr != null) || (curr == head)) {
curr = null; return;
}
Link temp = head;
while((temp != null) && (temp.next() != curr))
temp = temp.next();
curr = temp; }
public int length(){
int n = 0;
for(Link temp = head.next();temp != null;temp = temp.next())
n++;
return n;
}
public void setPos(int pos) {
curr = head;
for(int i = 0;(curr != null) && (i < pos);i++)
curr = curr.next();
}
public void setValue(Object it){
Assert.notFalse(isInList(),"Error");
curr.next().setElement(it);
}
public Object currValue() {
if(! isInList()) return null;
return curr.next().element();
}
public boolean isEmpty()
{
return head.next() == null;
}
public boolean isInList(){
return (curr != null) && (curr.next() != null);
}
public void print(){
if(isEmpty()) System.out.println("()");
else{
System.out.print("(");
for(setFirst();isInList();next())
System.out.print(currValue() + " ");
System.out.println(")");
}
}}