我有一个创建双端队列,可以从两侧(即前后)添加,删除和查看元素。>>
[我有增加,删除和查看'头部'元素的方法,但是我无法弄清楚对队列的'尾部'做同样事情的方法
到目前为止是我的代码:-
public class dequeue
{
private Node rear;
private Node front;
private int counter;
class Node
{
private String item;
private Node link;
}
public Node()
{
rear = front = null;
counter = 0;
}
public void hAdd(String o)
{
Node temp = new Node();
temp.item =o;
temp.link =null;
if (rear==null)
front = rear = temp;
else
{
rear.link = temp;
rear = temp;
}
counter++;
}
public boolean isEmpty()
{
if(counter==0)
return true;
return false;
}
public Object hPeek()
{
return rear.item;
}
public Object hRemove()
{
if (isEmpty())
return null;
else
{
Object temp=front.item;
front = front.link;
if (front == null)
rear = null;
counter--;
return temp;
}
}
public int size()
{
return counter;
}
public void tAdd(String o)
{
Node temp = new Node();
temp.item =o;
temp.link =null;
if (front==null)
front=rear=temp;
else
{
front.link=temp;
front=temp;
}
counter++;
}
public Object tPeek()
{
return front.item;
}
public Object tRemove()
{
if (isEmpty())
return null;
else
{
Object temp=rear.item;
rear=rear.link;
if (rear==null)
front=null;
counter--;
return temp;
}
}
public String toString()
{
StringBuilder result=new StringBuilder();
Node curr=front;
while(curr!=null)
{
result.append(curr.item+" \n");
curr = curr.link;
}
return result.toString();
}
}
我有一个创建双端队列,可以从两侧(即,正面和背面)添加,删除和查看元素,我得到了在'头部'添加,删除和查看元素的方法...
public class Dequeue {
int arr[];
int front;
int rear;
int size;
public Dequeue(int size){
this.front = -1;
this.rear=0;
this.size = size;
arr = new int[size];
}
public Dequeue(){
this.front = -1;
this.rear=0;
this.size = 10;
arr= new int[size];
}
boolean isQueueEmpty(){
return (front == -1);
}
boolean isQueueFull(){
return front == ((rear+1)%size);
}
int getFront(){
if(isQueueEmpty()){
return -1;
}
return arr[front];
}
int getRear(){
if(isQueueEmpty() || rear < 0){
return -1;
}
return arr[rear];
}
void insertFront(int data){
if(isQueueFull()){
System.out.println(-1);
return;
}
if(front == -1){
front = 0;
rear=0;
}
else if(front == 0){
front = size - 1 ;
}else{
front = front-1;
}
arr[front] = data;
}
void insertRear(int data){
if(isQueueFull()){
System.out.println(-1);
return;
}
if(front == -1){
front =0;
rear=0;
}
else{
rear =((rear+1)%size);
}
arr[rear] = data ;
}
void deleteFront(){
if(isQueueEmpty()){
System.out.println("-1");
return;
}
if(front == rear){
front = -1;
rear = -1;
}else{
front = ((front+1)%size);
}
}
void deleteRear(){
if(isQueueEmpty()){
System.out.println("-1");
return;
}
if(front == rear){
front =-1;
rear=-1;
}
else if(rear == 0)
rear = size-1;
else
rear = rear-1;
} }