// 用java 和数组构造一个栈并存取数据
class Q
{
char q[];
int putloc,getloc;
Q(int size)
{
q=new char[size+1];
putloc=getloc=0;
}
void put(char ch) //存数据的方法
{
if(putloc==q.length-1)
{
System.out.println("--Stack is full");
return;
}
putloc++;
q[putloc]=ch;
}
char get() //取数据的方法
{
if(putloc==getloc)
{
System.out.println("--Stack is empty");
return (char)0;
}
getloc++;
return(q[ getloc ]);
}
}
class queue
{
public static void main(String args[ ])
{
int i;
char m;
Q bigQ=new Q(100);
Q smallQ=new Q(4);
for(i=0;i<26;i++)
{
bigQ.put((char)('A'+i));
}
for(i=0;i<26;i++)
{
m=bigQ.get();
if(m!=(char)0)
{
System.out.print(m+" ");
}
}
}
}
以上的程序会输出 A B C D E F G H I J K L M N O P Q R S T U V W Y Z
//////////////////////////////////////////////////////////////////////////
而把最后的 for(i=0;i<26;i++)
{
m=bigQ.get( );
if(m!=(char)0)
{
System.out.print(m+" ");
}
}
改为:
for(i=0;i<26;i++)
{
bigQ.get() // 原来是m=bigQ.get();
if(bigQ.get()!=(char)0)
{
System.out.print(bigQ.get( )+" ");
}
}之后,其他部分不变,却输出 B D F H J L N P R T V X Z ---Stack is empty
------Stack is empty
------..........
...........
..........问题:搞不明白修改后为什么是这样输出,渴望高手解释一下,小弟感激不尽,高分奉送!!
class Q
{
char q[];
int putloc,getloc;
Q(int size)
{
q=new char[size+1];
putloc=getloc=0;
}
void put(char ch) //存数据的方法
{
if(putloc==q.length-1)
{
System.out.println("--Stack is full");
return;
}
putloc++;
q[putloc]=ch;
}
char get() //取数据的方法
{
if(putloc==getloc)
{
System.out.println("--Stack is empty");
return (char)0;
}
getloc++;
return(q[ getloc ]);
}
}
class queue
{
public static void main(String args[ ])
{
int i;
char m;
Q bigQ=new Q(100);
Q smallQ=new Q(4);
for(i=0;i<26;i++)
{
bigQ.put((char)('A'+i));
}
for(i=0;i<26;i++)
{
m=bigQ.get();
if(m!=(char)0)
{
System.out.print(m+" ");
}
}
}
}
以上的程序会输出 A B C D E F G H I J K L M N O P Q R S T U V W Y Z
//////////////////////////////////////////////////////////////////////////
而把最后的 for(i=0;i<26;i++)
{
m=bigQ.get( );
if(m!=(char)0)
{
System.out.print(m+" ");
}
}
改为:
for(i=0;i<26;i++)
{
bigQ.get() // 原来是m=bigQ.get();
if(bigQ.get()!=(char)0)
{
System.out.print(bigQ.get( )+" ");
}
}之后,其他部分不变,却输出 B D F H J L N P R T V X Z ---Stack is empty
------Stack is empty
------..........
...........
..........问题:搞不明白修改后为什么是这样输出,渴望高手解释一下,小弟感激不尽,高分奉送!!
改成这样就好了。
for(i=0;i<26;i++)
{
if(bigQ.get()!=(char)0)
{
System.out.print(bigQ.get( )+" ");
}
}
getloc++;
return(q[ getloc ]);
因为每一调用get(),getloc向前移一个,所以在
bigQ.get();
if(bigQ.get()!=(char)0)
{
System.out.print(bigQ.get( )+" ");
}
中,实际上每次都读了两次(getloc向前移两次),而只有两次中的第二次被打印出来了。