मैं कंप्यूटिंग ढेर साथ फैला मैं एक कोड लिखा और यहाँ चर मैं इसे में प्रयोग किया जाता है है के लिए एक कार्यक्रम लिख रहा हूँ:बारे में जावा में ढेर साथ कंप्यूट अवधि
52 नामित एक्स पूर्णांकों की एक सरणी: इस वह सरणी है जिसे हम अपने स्पैन की गणना करना चाहते हैं; इस कोड में एक्स तत्वों को यादृच्छिक फ़ंक्शन द्वारा प्रारंभ किया जाएगा;
इस कार्यक्रम का आउटपुट एक पूर्णांक एरे नामित एस है जो एक्स के समान आकार में है; और एस [i] दिन
सेंट पर स्टॉक का विस्तार है।
तो यहाँ कोड है कि मैं एल्गोरिथ्म के आधार पर लिखा है है:
public class ComputingSpansInStack {
static int [] X = new int[52];
static int [] S = new int[52];
public static void SetX()
{
Random rn = new Random();
for (int i = 0; i < 52; i++) {
X[i] = 1 + rn.nextInt(100);
}
}
public static void main(String[] args) {
SetX();
int h;
Stack<Integer> st=new MyStack<>();
boolean done;
for (int i = 0; i<52 ; i++)
{
done = false;
while(!(st.isEmpty()||done))
{
if(X[i]>= X[st.top()])
st.pop();
else
done = true;
}
if(st.isEmpty())
h = -1;
else
h = st.top();
S[i] = i - h;
st.push(i);
}
for (int i =0; i<52; i++)
{
System.out.println(X[i] + " "+ S[i]);
}
}
लेकिन उत्पादन यहाँ है:
38 --- 1
7 --- --- 1
16 ----- 2
62 ------ 4
35 ----- 1
31 ----- 1
6 ----- 1 .......
समस्या: 62 के लिए यह 3 नहीं 4 होना चाहिए;
यहाँMyStack है:
public class MyStack<E> implements Stack<E>{
private final E s[];
int t=0;
public MyStack() {
this.s = (E[]) new Object[100];
}
public int size(){
return t;
}
public boolean isEmpty(){
switch(size()){
case 0:
return true;
}
return false;
}
public E top() {
if(isEmpty())
throw new EmptyStackException();
return s[t-1];
}
public void push(E element) {
if(isEmpty())
s[0]= element;
else
s[t]= element;
t++;
}
public E pop() {
E x;
if(isEmpty())
throw new EmptyStackException();
else{
x = s[t-1];
s[t-1] = null;
t--;
}
return x;
}
}
कोई मदद ??
अग्रिम धन्यवाद
एल्गोरिथ्म सही लग रहा है, आप 'MyStack' के कार्यान्वयन दिखा सकते हैं? –
@HunterMcMillen मैंने इसे –
पोस्ट करने के लिए जोड़ा है यह एक लिफ़ो डेटा संरचना सही है? कैसे 'डेक सेंट = नया ArrayDeque ();' (जावा 6+ आवश्यक) के बारे में। –