请高手指点代码

xwc678 2007-04-21 07:50:23
在Eclipse下编译显示:返回类型与 Object.clone() 不兼容

及类型 Queue 中的方法 enQueue(Object)对于参数(int)不适用
interface Interface_Queue {

// only copy references
public Queue clone();

// out queue from head
// when is empty , return null
public Object deQueue();

// enter queue from tail
public void enQueue(Object o);

// get the head elem in the queue
// if empty return null
public Object getHead();

// get the tail elem in the queue
public Object getTail();

public int getLength();

public boolean isEmpty();

// print all the elem from head to tail
// return the print string
public String printAll();

// reverse all the elems from head to tail
public void reverse();

public void clean();
}

public class Queue
implements Cloneable, Interface_Queue {

class Node
implements Cloneable {
Object elem;
Node next;
Node(Object elem, Node next) {
this.elem = elem;
this.next = next;
}

// only copy references
public Node clone() {
try {
Node n = (Node)super.clone();
n.elem = this.elem;
if (this.next != null) {
n.next = (Node)this.next.clone();
}
else {
n.next = null;
}
return n;
}
catch (CloneNotSupportedException ex) {
System.err.println("Ooop: Clone Not Supported Exception");
ex.printStackTrace();
}
return null;
}
}

// have head node
// when the queue is empty,the head and tail point to the same head node
// enQueue from tail
// deQueue from head
private Node head = new Node(null, null);
private Node tail = head;
private int length = 0;

// only copy references
public Queue clone() {
try {
Queue n = (Queue)super.clone();
n.head = this.head.clone();
Node p = n.head;
while (p.next != null) {
p = p.next;
}
n.tail = p;
return n;
}
catch (CloneNotSupportedException ex) {
System.out.println("Ooop: Clone Not Supported Exception");
ex.printStackTrace();
}
return null;
}

// enter queue from tail
public void enQueue(Object o) {
tail.next = new Node(o, null);
tail = tail.next;
length++;
}

// out queue from head
// when is empty , return null
public Object deQueue() {
if (isEmpty()) {
return null;
}
Node p = head.next;
head.next = p.next;
if (tail == p) {
tail = head;
}
length--;
return p.elem;
}

// reverse all the elems from head to tail
public void reverse() {
if (length <= 1) {
return;
}
tail = head.next;
Node q = head.next, p = q.next, r = p.next;
q.next = null;
// when only two nodes
if (r == null) {
p.next = q;
head.next = p;
return;
}
// more than two nodes
while (r.next != null) {
p.next = q;
q = p;
p = r;
r = r.next;
}
p.next = q;
r.next = p;
head.next = r;
}

// get the head elem in the queue
// if empty return null
public Object getHead() {
if (isEmpty()) {
return null;
}
return head.next.elem;
}

// get the tail elem in the queue
public Object getTail() {
if (isEmpty()) {
return null;
}
return tail.elem;
}

...全文
179 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jk88811 2007-04-21
  • 打赏
  • 举报
回复
代码太长了, 谁有那么多时间看???
xwc678 2007-04-21
  • 打赏
  • 举报
回复
// print all the elem from head to tail
// return the print string
public String printAll() {
String out = "";
if (isEmpty()) {
out = "Queue:\tEmpty!";
}
else {
out = "[Head]";
Node p = head.next;
while (p != null) {
out += " -> " + p.elem;
p = p.next;
}
}
System.out.println(out);
return out;
}

public int getLength() {
return length;
}

public boolean isEmpty() {
return length == 0;
}

public void clean() {
head.next = null;
tail = head;
length = 0;
}

public static void main(String[] args) {
Queue q = new Queue(), s;
q.enQueue(1);
q.enQueue(2);
q.reverse();
q.enQueue(3);
System.out.println(q.deQueue());
q.enQueue(4);
q.enQueue(5);
System.out.println(q.getTail());
q.printAll();
q.reverse();
q.printAll();
System.out.println("clone test:");
q = new Queue();
for (int i = 0; i < 20; i++) {
q.enQueue(i);
}
s = q.clone();
q.printAll();
s.printAll();
for (int i = 0; i < 20; i++) {
q.deQueue();
}
q.printAll();
s.printAll();
s = q.clone();
q.printAll();
s.printAll();
s.enQueue(3);
s.enQueue(4);
s.enQueue(5);
q.printAll();
s.printAll();
q.enQueue(5);
q.printAll();
s.printAll();
System.out.println(" clean -----");
s = new Queue();
s.clean();
s.printAll();
s.enQueue(3);
s.enQueue(2);
s.printAll();
s.clean();
s.printAll();
System.out.println(s.getLength());
System.out.println(s.isEmpty());
}
}

在Eclipse下编译显示:返回类型与 Object.clone() 不兼容

及类型 Queue 中的方法 enQueue(Object)对于参数(int)不适用


interface Interface_Queue {

// only copy references
public Queue clone();

// out queue from head
// when is empty , return null
public Object deQueue();

// enter queue from tail
public void enQueue(Object o);

// get the head elem in the queue
// if empty return null
public Object getHead();

// get the tail elem in the queue
public Object getTail();

public int getLength();

public boolean isEmpty();

// print all the elem from head to tail
// return the print string
public String printAll();

// reverse all the elems from head to tail
public void reverse();

public void clean();
}

public class Queue
implements Cloneable, Interface_Queue {

class Node
implements Cloneable {
Object elem;
Node next;
Node(Object elem, Node next) {
this.elem = elem;
this.next = next;
}

// only copy references
public Node clone() {
try {
Node n = (Node)super.clone();
n.elem = this.elem;
if (this.next != null) {
n.next = (Node)this.next.clone();
}
else {
n.next = null;
}
return n;
}
catch (CloneNotSupportedException ex) {
System.err.println("Ooop: Clone Not Supported Exception");
ex.printStackTrace();
}
return null;
}
}

// have head node
// when the queue is empty,the head and tail point to the same head node
// enQueue from tail
// deQueue from head
private Node head = new Node(null, null);
private Node tail = head;
private int length = 0;

// only copy references
public Queue clone() {
try {
Queue n = (Queue)super.clone();
n.head = this.head.clone();
Node p = n.head;
while (p.next != null) {
p = p.next;
}
n.tail = p;
return n;
}
catch (CloneNotSupportedException ex) {
System.out.println("Ooop: Clone Not Supported Exception");
ex.printStackTrace();
}
return null;
}

// enter queue from tail
public void enQueue(Object o) {
tail.next = new Node(o, null);
tail = tail.next;
length++;
}

// out queue from head
// when is empty , return null
public Object deQueue() {
if (isEmpty()) {
return null;
}
Node p = head.next;
head.next = p.next;
if (tail == p) {
tail = head;
}
length--;
return p.elem;
}

// reverse all the elems from head to tail
public void reverse() {
if (length <= 1) {
return;
}
tail = head.next;
Node q = head.next, p = q.next, r = p.next;
q.next = null;
// when only two nodes
if (r == null) {
p.next = q;
head.next = p;
return;
}
// more than two nodes
while (r.next != null) {
p.next = q;
q = p;
p = r;
r = r.next;
}
p.next = q;
r.next = p;
head.next = r;
}

// get the head elem in the queue
// if empty return null
public Object getHead() {
if (isEmpty()) {
return null;
}
return head.next.elem;
}

// get the tail elem in the queue
public Object getTail() {
if (isEmpty()) {
return null;
}
return tail.elem;
}

// print all the elem from head to tail
// return the print string
public String printAll() {
String out = "";
if (isEmpty()) {
out = "Queue:\tEmpty!";
}
else {
out = "[Head]";
Node p = head.next;
while (p != null) {
out += " -> " + p.elem;
p = p.next;
}
}
System.out.println(out);
return out;
}

public int getLength() {
return length;
}

public boolean isEmpty() {
return length == 0;
}

public void clean() {
head.next = null;
tail = head;
length = 0;
}

public static void main(String[] args) {
Queue q = new Queue(), s;
q.enQueue(1);
q.enQueue(2);
q.reverse();
q.enQueue(3);
System.out.println(q.deQueue());
q.enQueue(4);
q.enQueue(5);
System.out.println(q.getTail());
q.printAll();
q.reverse();
q.printAll();
System.out.println("clone test:");
q = new Queue();
for (int i = 0; i < 20; i++) {
q.enQueue(i);
}
s = q.clone();
q.printAll();
s.printAll();
for (int i = 0; i < 20; i++) {
q.deQueue();
}
q.printAll();
s.printAll();
s = q.clone();
q.printAll();
s.printAll();
s.enQueue(3);
s.enQueue(4);
s.enQueue(5);
q.printAll();
s.printAll();
q.enQueue(5);
q.printAll();
s.printAll();
System.out.println(" clean -----");
s = new Queue();
s.clean();
s.printAll();
s.enQueue(3);
s.enQueue(2);
s.printAll();
s.clean();
s.printAll();
System.out.println(s.getLength());
System.out.println(s.isEmpty());
}
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧