2016-04-05 18 views
0

Ben yığını oluşturmak üzere bir imleç kullanmak istiyorum, ama gerçekten dizi tabanlı uygulamalar (imleç uygulaması)

public class cursor { 

    private int header; 
    static cursorNode[ ] cursor; 

    private static final int SPACE_SIZE = 100; 

    static 
    { 
     cursor = new cursorNode[ SPACE_SIZE ]; 
     for(int i = 0; i < SPACE_SIZE; i++) 
      cursor[ i ] = new cursorNode(null, i + 1); 
     cursor[ SPACE_SIZE - 1 ].next = 0; 
    } 
    public static int alloc() 
    { 
     int p = cursor[ 0 ].next; 
     if(p == 0) 
      return 0; 
     cursor[ 0 ].next = cursor[ p ].next; 
     cursor[ p ].next=0; 
     return p; 
    } 

    public static void free(int p) 
    { 

     cursor[ p ].next = cursor[ 0 ].next; 
     cursor[ 0 ].next = p; 
    } 
    public cursor() 
    { 
     header = alloc(); 
     cursor[ header ].next = 0; 
    } 
    public boolean isEmpty() 
    { 
     return cursor[ header ].next == 0; 
    } 
    public void addFirst(int l, Object x){ 
     int temp=alloc(); 
     cursor[temp].element=x; 
     cursor[temp].next=cursor[l].next; 
     cursor[l].next=temp; 
    } 
    public boolean removeFirst(int l){ 
     if(cursor[l].next==0) 
      return false; 
     int p =cursor[l].next; 
     cursor[l].next=cursor[p].next; 
     free(p); 
     return true; 
    } 
    public void print(int l){ 
     int p=cursor[l].next; 
     while(p!=0){ 
      System.out.print(cursor[p].element); 
      p=cursor[p].next; 
     } 
    } 


}. 

public class cursorNode { 
    Object element; 
    int  next; 

     public cursorNode(Object x){ 
      this(x, 0); 
     } 

     public cursorNode(Object x, int n) 
     { 
      element = x; 
      next = n; 
     } 


    } 

açıklayabilir bütün cursor uygulamaları anlamıyor ne imleç uygulanması ve nasıl bir yığın oluşturmak için kullanmak. Anında push() addFirst() işlevini kullanacağını ve pop() removeFirst() yöntemini kullanacağını, ancak nasıl üst() işlevinin kullanılacağını anlıyorum.

+0

Tam olarak ne sorduğundan emin değilim. Gönderdiğiniz kodun bir açıklamasını mı yoksa bir 'top' yöntemini nasıl uygulayacağınıza dair öneriler mi arıyorsunuz? – sprinter

+0

İkisini de arıyorum. ancak bu kodu şu an için kullanan bir yığın sağlayabiliyorsanız, bu harika olur. – Nicky

cevap

0

Öncelikle, yayınladığınız kodun ne anlama geldiğini açıklayan bir açıklama. Esas olarak, sabit boyutlu bir havuzda depolanan birkaç değer koleksiyonunu yönetmenin bir yoludur. Öğeler bir koleksiyondan kaldırıldıkça, yeniden kullanılmak üzere ücretsiz bir listeye döndürülecek şekilde tasarlanmıştır. Pek çok yönden yazılı bir şekilde yazılmıştır, ancak inceleme yorumları istemediyseniz, onları atlarım.

İkinci olarak, bir yığın uygulamak için bu kodu nasıl kullanabilirsiniz? Cevap: yapamazsın. Değerleri almak için hiçbir ortak yöntem yoktur (bir gözatma işlemi için gereklidir) ve removeFirst yöntemi, kaldırılan değer yerine bir boolean döndürür. Bir yığını uygulamak için kullanmak için bu kodu değiştirmeniz gerekecektir.

+0

getFirst() nasıl uygulanır. – Nicky

+0

Bana yardıma ihtiyacınız olduğu konusunda daha iyi bilgi vermelisiniz. Eğer kodu yazmamı istiyorsan, cevabım, bir yığın uygulamak için imleç sınıfını kullanamayacağım. – sprinter