java删除队列中的奇数
我正在尝试删除队列链接列表中的奇数,但我正在努力使函数 删除我的代码中的奇数,以便更好地理解
public class queueLinked {
private Node rear;
private Node front;
private int siz;
public boolean isEmpty() {//function return boolean if is empty or not
boolean response = false;
if (siz == 0) {
response = true;
}
return response;
}
public void enqueue(int element) { // inserting the value type of int
Node node = new Node(element);
if (front == null) {
rear = node;
front = node;
} else {
rear.setNext(node);
rear = node;
siz++;
}
}
public queueLinked() {
front = null;
rear = null;
siz = 0;
}
public Node dequeue() { // to remove the a element in the queue
Node response = null;
if (front != null) ;
if (front.getNext() != null) {
response = new Node(front.getData());
front = front.getNext();
siz--;
} else {
response = new Node(front.getData());
front = null;
rear = null;
}
return response;
}
public Node peak() {
Node response = null;
if (!isEmpty()) {
response = new Node(front.getData());
}
return response;
}
public int getSiz() { // to get the size
return siz;
}
public void display() { // display the queue function
System.out.print("\nQueue = ");
if (siz == 0) {
System.out.print("Empty\n");
return;
}
Node ptr = front;
while (ptr != rear.getNext()) {
System.out.print(ptr.getData() + " ");
ptr = ptr.getNext();
}
System.out.println();
}
public void deleteOdd() { // delete odd number in the queue
System.out.print("\nQueue = ");
if (siz == 0) { //make sure if it is empty or not
System.out.print("Empty\n");
return;
}
Node tempe = front;
if (front.getData() % 2 != 0){
enqueue(front.getData());
front = front.getNext();
rear = rear.getNext();
}
}
}
在函数deleteOdd()
中,我试图确定它是否为空,然后我尝试了多种方法来获得正确的一个,如果第一个是奇数,则删除它,并且front=front。接下来,我不知道这是否正确
# 1 楼答案
尝试以下函数删除队列中的奇数
# 2 楼答案
首先,代码中的其他方法存在一些问题:
问题
enqueue
在添加到空列表时,还应增加列表的大小李>dequeue
在if (front != null) ;
之后有一个错误的分号,因此您可以在它下面的一行中得到一个空指针异常李>以下是一个可能的修正,只需稍作改动:
删除奇数
我选择只使用类的公共方法,这样,如果需要的话,这个函数可以很容易地在类之外进行编码
队列的当前大小用于倒计时,因此每个节点只访问一次。数据为偶数的节点将再次附加到队列中,但此倒计时将阻止我们再次访问这些节点(以及再次访问……):