Ayuda con codigo
Publicado por francisco (1 intervención) el 02/02/2011 22:28:04
Hola. Necesito ayuda con un codigo. Es de una clase queue con una extension en la que no logro que pase un test.
Nodo
class Nodo{ //creación clase Nodo
public Object valor;
public Nodo sgte;
public Nodo(Object x){ //constructor utiliza sólo un parámetro.
valor=x;
}
}
Queue
class Queue{
protected Nodo primero; //se maneja el primer Nodo de la lista
protected int largo; //contador de elementos de la lista
public Queue() {
reset();
}
public void reset() { //reinicia la lista
primero=null;
largo=0;
}
public boolean empty(){ //ve si está vacía
if(primero==null) return true;
else return false;
}
public boolean full() { //Queue nunca se llena.
return false;
}
public void push(int x){
Nodo n = new Nodo(x); //valor a agregar.
if (primero==null) { //si el Queue está vacío.
primero = n;
primero.sgte = primero;
largo = 1;
}
else { //Si no, se agrega al final
Nodo aux=primero;
while(aux.sgte != primero)
aux=aux.sgte;
aux.sgte=n;
n.sgte=primero;
++largo;
}
}
public int pop(){
if(primero==null) {largo=0; } //si la lista está vacía.
else{
if(largo==1){ //si hay solo un elemento.
int b=primero.dato;
primero=null;
largo=0;
return b;
}
else{ // Si no referencia el último hacia el nuevo primero.
Nodo aux=primero;
int a=aux.dato;
while(aux.sgte != primero)
aux=aux.sgte;
primero=primero.sgte;
aux.sgte=primero;
--largo;
return a;
}
}
}
}
la extension queue1
class Queue1 extends Queue{
public int length(){ //solo se ocupa el contador de clase Queue
return largo;
}
public String toString(){
String cola = "";
int n = length();
// quitar todos los elementos, los pasa a String y luego los vuelve a poner en la cola
for (int i = 0; i < n; i++) {
int x = pop();
cola += (" " + x.toString());
push(x);
}
if (largo >= 1)
return cola.trim();
return "";
}
}
y el test
class TestQueue{
public static void pushTest(){
Queue q = new Queue();
if ( q.length() != 0 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(5);
if ( q.length() != 1 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(10);
if ( q.length() != 2 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5 10") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(20);
if ( q.length() != 3 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5 10 20") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(8);
if ( q.length() != 4 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5 10 20 8") ){
System.out.println("Representación del Queue incorrecta");
}
}
public static void pushPopTest(){
Queue q = new Queue();
q.push(5);
q.push(10);
q.push(20);
q.push(8);
if ( q.pop()!=5 ) {
System.out.println("Salio elemento incorrecto");
}
if ( q.length() != 3 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("10 20 8") ){
System.out.println("Representación del Queue incorrecta");
}
if ( q.pop()!=10 ) {
System.out.println("Salio elemento incorrecto");
}
if ( q.length() != 2 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("20 8") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(3);
if ( q.length() != 3 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("20 8 3") ){
System.out.println("Representación del Queue incorrecta");
}
if ( q.pop()!=20 ) {
System.out.println("Salio elemento incorrecto");
}
if ( q.length() != 2 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("8 3") ){
System.out.println("Representación del Queue incorrecta");
}
}
public static void testCapacidad(){
Queue q = new Queue();
for ( int i=0; i<10000; i++){
if ( q.length() != i){
System.out.println("Error en el tamanno de la cola");
}
q.push(i);
if ( q.length() != i+1){
System.out.println("Error en el tamanno de la cola");
}
}
for ( int i=0; i<10000; i++){
if ( q.length() != 10000-i){
System.out.println("Error en el tamanno de la cola");
}
if ( q.pop() != i){
System.out.println("Elemento no esperado");
}
if ( q.length() != 10000-i-1){
System.out.println("Error en el tamanno de la cola");
}
}
}
public static void testConsistencia(){
Queue q = new Queue();
int nextPut = 0;
int nextGet = 0;
int tamanno = 0;
for ( int i = 0; i<100000; i++){
if ( q.length() != tamanno){
System.out.println("Error en el tamanno de la cola");
}
if ( q.length()==0 || Math.random()>0.48 ){
//poner
q.push(nextPut++);
tamanno++;
} else {
//sacar
if ( q.pop() != nextGet++ ){
System.out.println("Elemento no esperado");
}
tamanno--;
}
if ( q.length() != tamanno){
System.out.println("Error en el tamanno de la cola");
}
}
}
public static void main(String[] args){
pushTest();
pushPopTest();
testCapacidad();
testConsistencia();
}
}
agradeceria un monton la ayuda.Gracias
Nodo
class Nodo{ //creación clase Nodo
public Object valor;
public Nodo sgte;
public Nodo(Object x){ //constructor utiliza sólo un parámetro.
valor=x;
}
}
Queue
class Queue{
protected Nodo primero; //se maneja el primer Nodo de la lista
protected int largo; //contador de elementos de la lista
public Queue() {
reset();
}
public void reset() { //reinicia la lista
primero=null;
largo=0;
}
public boolean empty(){ //ve si está vacía
if(primero==null) return true;
else return false;
}
public boolean full() { //Queue nunca se llena.
return false;
}
public void push(int x){
Nodo n = new Nodo(x); //valor a agregar.
if (primero==null) { //si el Queue está vacío.
primero = n;
primero.sgte = primero;
largo = 1;
}
else { //Si no, se agrega al final
Nodo aux=primero;
while(aux.sgte != primero)
aux=aux.sgte;
aux.sgte=n;
n.sgte=primero;
++largo;
}
}
public int pop(){
if(primero==null) {largo=0; } //si la lista está vacía.
else{
if(largo==1){ //si hay solo un elemento.
int b=primero.dato;
primero=null;
largo=0;
return b;
}
else{ // Si no referencia el último hacia el nuevo primero.
Nodo aux=primero;
int a=aux.dato;
while(aux.sgte != primero)
aux=aux.sgte;
primero=primero.sgte;
aux.sgte=primero;
--largo;
return a;
}
}
}
}
la extension queue1
class Queue1 extends Queue{
public int length(){ //solo se ocupa el contador de clase Queue
return largo;
}
public String toString(){
String cola = "";
int n = length();
// quitar todos los elementos, los pasa a String y luego los vuelve a poner en la cola
for (int i = 0; i < n; i++) {
int x = pop();
cola += (" " + x.toString());
push(x);
}
if (largo >= 1)
return cola.trim();
return "";
}
}
y el test
class TestQueue{
public static void pushTest(){
Queue q = new Queue();
if ( q.length() != 0 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(5);
if ( q.length() != 1 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(10);
if ( q.length() != 2 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5 10") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(20);
if ( q.length() != 3 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5 10 20") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(8);
if ( q.length() != 4 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5 10 20 8") ){
System.out.println("Representación del Queue incorrecta");
}
}
public static void pushPopTest(){
Queue q = new Queue();
q.push(5);
q.push(10);
q.push(20);
q.push(8);
if ( q.pop()!=5 ) {
System.out.println("Salio elemento incorrecto");
}
if ( q.length() != 3 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("10 20 8") ){
System.out.println("Representación del Queue incorrecta");
}
if ( q.pop()!=10 ) {
System.out.println("Salio elemento incorrecto");
}
if ( q.length() != 2 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("20 8") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(3);
if ( q.length() != 3 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("20 8 3") ){
System.out.println("Representación del Queue incorrecta");
}
if ( q.pop()!=20 ) {
System.out.println("Salio elemento incorrecto");
}
if ( q.length() != 2 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("8 3") ){
System.out.println("Representación del Queue incorrecta");
}
}
public static void testCapacidad(){
Queue q = new Queue();
for ( int i=0; i<10000; i++){
if ( q.length() != i){
System.out.println("Error en el tamanno de la cola");
}
q.push(i);
if ( q.length() != i+1){
System.out.println("Error en el tamanno de la cola");
}
}
for ( int i=0; i<10000; i++){
if ( q.length() != 10000-i){
System.out.println("Error en el tamanno de la cola");
}
if ( q.pop() != i){
System.out.println("Elemento no esperado");
}
if ( q.length() != 10000-i-1){
System.out.println("Error en el tamanno de la cola");
}
}
}
public static void testConsistencia(){
Queue q = new Queue();
int nextPut = 0;
int nextGet = 0;
int tamanno = 0;
for ( int i = 0; i<100000; i++){
if ( q.length() != tamanno){
System.out.println("Error en el tamanno de la cola");
}
if ( q.length()==0 || Math.random()>0.48 ){
//poner
q.push(nextPut++);
tamanno++;
} else {
//sacar
if ( q.pop() != nextGet++ ){
System.out.println("Elemento no esperado");
}
tamanno--;
}
if ( q.length() != tamanno){
System.out.println("Error en el tamanno de la cola");
}
}
}
public static void main(String[] args){
pushTest();
pushPopTest();
testCapacidad();
testConsistencia();
}
}
agradeceria un monton la ayuda.Gracias
Valora esta pregunta


0