Использование InsertionSort для односвязного списка в C - PullRequest
0 голосов
/ 02 июня 2019

У меня есть назначение, и я должен использовать алгоритм inserttionSort для односвязного списка в C. Функция вставки и печати списка уже задана.

struct le{
int value;
struct le *next;
};
typedef struct le listenelement;
typedef listenelement *list;
void insert(int v, list *l){
    listenelement *new;
    new = malloc(sizeof(listenelement));
    new->value = v;
    new->next = *l;
    *l = new;

Итак, я пробовал это много раз, а также с разными версиями, которые никогда не работали. Это то, что я до сих пор:

void sort(list *l, int m){
  struct le *list = NULL;
  struct le *m = *l;
  while(m != NULL){
    struct le *next = m->next;
    insert(&list, m);
    m = next;
  }
  *l = list;
}

m - это параметр для (положительных значений, включая 0) чисел. Если m отрицательно, отрицательный знак следует игнорировать и все равно сортировать по алгоритму inserttionSort. На данный момент основной проблемой является сам алгоритм вставки сортировки и меньше отрицательных чисел.

...