curr->ord = "some string" is wrong
вместо этого вам нужно выделить буфер и поместить в него строку
например,
curr->ord = malloc( strlen(yourstring) + 1 );
strcpy(curr->ord, yourstring);
, потому что
curr = (item*)malloc(sizeof(item));
только выделяет структуру, включаяуказатель 'ord', но не то, на что он указывает .
Еще одна вещь, которая выглядит несколько подозрительно, - это
curr->next = head;
head = curr;
, похоже, имя должно было быть«предыдущий», а не «следующий», как вы это делаете (LIFO)
в противном случае, если вы хотите, чтобы «обычный» список, связанный с FIFO, просто имел заголовок ptr и конец ptr, используйте конечный ptr для добавленияэлементы, сохраняя при этом указатель на первый элемент списка.