ССХ,Сортировка Вставка в связный список
Я пытаюсь отладить проблему в моем круговом связанный списке для 12hrs в настоящее время. Функция принимает ADT, у которого есть начало и поле курсора. Начальная фиктивная ячейка указывает на себя. Вставить элементы. Элементы повторения не допускаются.
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);
}
}
Код принимает целую серию и затем сортирует их в параметр LL. Предполагается, что он будет использоваться для набора (следовательно, почему нет повторных записей).
Выход для: 9, 8, 7, 6, 5, 4, 3, 2, 1
есть .. 3, 4, 5, 6, 7, 8, 9 (что случилось с первые два значения)
При вводе что-то вроде: 7, 3, 5, 1, 9, 2
из всего 7, 9 (так что он не может обрабатывать значения, разделенные более чем один .. оо)
Дополнительная информация:
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 - указательный тип для установкиCDT. setElementT, однако, является простым и простым int. Извините за двусмысленность.
Я не вижу никакого кода, вы можете разместить его? – Cheiron
Счастье. SSH занял больше времени, чем ожидалось. При необходимости я могу добавить структуры typedef. –
'Новый' в c с тех пор? – ameyCU