Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] sottolista di una lista collegata con puntatori

    Salve! Ho questo problema. Avendo due liste collegate con puntatori devo verificare che la prima lista sia una sottolista (sotto sequenza) della seconda.
    codice:
    struct List
    {
    	int value;
    	struct List * nextPtr;
    };
    
    Boolean match(struct List * ptr1, struct List * ptr2)
    /* Restituisce TRUE se il prefisso di ptr1 e' uguale al prefisso di ptr2 */
    {
    	Boolean match;
    
    	match = TRUE;
    	while(ptr2 != NULL && match == TRUE)
    	{
    		if(ptr1 == NULL || ptr2->value != ptr1->value)
    			match = FALSE;
    		else
    		{
    			ptr2 = ptr2->nextPtr;
    			ptr1 = ptr1->nextPtr;
    		}
    	}
    	return (match);
    }
    
    Boolean scan4match(struct List * ptr1, struct List * ptr2)
    /* Riceve in ingresso due sequenze di interi s1 e s2 rappresentate come liste
     * in forma collegata con puntatori e verifica se s1 è una sottosequenza di s2.*/
    {
    	Boolean found;
    	found = FALSE;
    	while(ptr1 != NULL && found == FALSE)
    	{
    		if(match(ptr1, ptr2) == TRUE)
    			found = TRUE;
    		else
    			ptr1 = ptr1->nextPtr;
    	}
    	return found;
    }
    scan4match è la funzione in questione. Se ho la lista {1,2,5} e la lista {1,2,3,4} mi restituisce FALSE perchè?

  2. #2

    Moderazione

    Benvenuto sul forum ; ti ricordo che il codice va postato tra tag [code] ... [/code], altrimenti perde l'indentazione. Qui ho corretto io, in futuro ricordatene (e intanto dai un'occhiata al regolamento).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3

    Re: [C] sottolista di una lista collegata con puntatori

    Originariamente inviato da LinuxStar
    Se ho la lista {1,2,5} e la lista {1,2,3,4} mi restituisce FALSE perchè?
    Perché {1,2,5} non è una sottosequenza di {1,2,3,4}?
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Chiedo scusa per il codice postato male e poi volevo dire grazie per il link del regolamento.

    Ho un main di questo tipo:
    codice:
    int main(void)
    {
    	struct List * src1;
    	struct List * src2;
    
    	init(&src1);
    	init(&src2);
    	sufInsert(&src1, 1);
    	sufInsert(&src1, 2);
    	sufInsert(&src1, 5);
    	sufInsert(&src2, 1);
    	sufInsert(&src2, 2);
    	sufInsert(&src2, 3);
    	sufInsert(&src2, 4);
    
    
    	if(scan4match(src1, src2)==TRUE)
    		printf("True");
    	else
    		printf("False");
    	return 0;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.