AoA,Ordinati inserimento nella lista concatenata
Sto cercando di eseguire il debug di un problema nella mia lista concatenata circolare per 12 ore ora. La funzione accetta un ADT che ha un campo di inizio e di cursore. La cella fittizia iniziale indica se stessa. Inserire elementi Gli elementi di ripetizione non sono ammessi.
int setInsertElementSorted(setADT buffer, setElementT E)
{
bool isUnique = true;
cellT *previous;
previous = buffer->start;
buffer->cursor = buffer->start->next;
while(buffer->cursor != buffer->start){
if(buffer->cursor->value == E){
isUnique = false;
} else if(E < buffer->cursor->value)
break;
else {
previous = buffer->cursor;
buffer->cursor = buffer->cursor->next;
}
}
if(isUnique != false){
cellT *newNode = malloc(sizeof(cellT));
newNode->value = E;
previous->next = newNode;
newNode->next = buffer->cursor;
buffer->count++;
return (buffer->count);
}
}
Il codice contiene una serie di numeri interi e quindi li ordina nel parametro LL. Dovrebbe essere usato per un set (quindi perché non ripetere le voci).
L'uscita: 9, 8, 7, 6, 5, 4, 3, 2, 1
è .. 3, 4, 5, 6, 7, 8, 9 (che fine la primi due valori)
Quando si introduce qualcosa come:? 7, 3, 5, 1, 9, 2
out è solo 7, 9 (quindi non può gestire valori separati da più di un .. oO)
Ulteriori informazioni:
typedef struct cellT {
int value;
struct cellT *next;
} cellT;
struct setCDT{
int count;
cellT *start;
cellT *cursor;
};
setADT setNew()
{
setADT newNode = malloc(sizeof(struct setCDT));
newNode->start = newNode->cursor = malloc(sizeof(cellT));
newNode->start->next = newNode->cursor->next = newNode->start;
newNode->count = 0;
return (newNode);
}
setADT è un tipo di puntatore per impostareCDT. setElementT, tuttavia, è semplicemente un semplice int. Ci scusiamo per l'ambiguità.
non vedo alcun codice, puoi pubblicarlo? – Cheiron
Srry about. SSH ha richiesto più tempo del previsto. Posso aggiungere le strutture typedef se necessario. –
'Nuovo' in c da quando? – ameyCU