Списки кажутся мне очень трудными. Я хочу найти наименьший элемент в файле: 1 5 8 6 4 8 6 48 9
. Это 1, и я хочу удалить это 1
. Я могу найти наименьший элемент, но не могу его удалить. Я нахожу наименьшее место элемента, но не значение. Я попытался скопировать удаление функции из Интернета, однако я не могу это понять из-за того, что я действительно новичок в C. Он пишет ошибку, которая разыменовывает неполный тип. Пожалуйста помоги. Поместите весь код, потому что это должно быть более удобным для понимания.c связанный список удалить наименьший элемент
#include <stdio.h>
#include <stdlib.h>
typedef struct linkedList {
int value;
struct linkedList *next;
} linkedList, head;
linkedList *readList(linkedList *head) {
FILE *dataFile;
dataFile = fopen("duom.txt", "r");
if (dataFile == NULL) {
printf("Nepasisekė atidaryti failo\n");
} else {
printf("Duomenų failą pavyko atidaryti\n");
}
while (!feof (dataFile))
if (head == NULL) {
head = malloc(sizeof(linkedList));
fscanf(dataFile, "%d", &head->value);
head->next = NULL;
} else {
struct linkedList *current = head;
struct linkedList *temp = malloc(sizeof(linkedList));
while (current->next != NULL) {
current = current->next;
}
fscanf(dataFile, "%d", &temp->value);
current->next = temp;
temp->next = NULL;
}
return head;
}
void search(linkedList *head, int *lowest) {
int a[100];
int i = 0;
int minimum;
int b = 0;
linkedList *current = head;
while (current != NULL) {
a[i] = current->value;
current = current->next;
i++;
}
b = i;
i = 0;
minimum = a[0];
while (b > 0) {
if (minimum > a[i]) {
minimum = a[i];
lowest = i;
}
i++;
b--;
}
}
void deleteNode(struct node **head_ref, int key) {
struct node* temp = *head_ref, *prev;
if (temp != NULL && temp->data == key) {
*head_ref = temp->next; // Changed head
free(temp); // free old head
return;
}
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL)
return;
prev->next = temp->next;
free(temp);
}
void printList(linkedList *head) {
linkedList *current = head;
while (current != NULL) {
printf("%d->", current->value);
current = current->next;
}
printf("NULL\n");
return;
}
int main() {
linkedList *A = NULL;
A = readList(A);
search(A);
head = head->next;
minimum = head->value;
headk->next = head->next;
free(head);
printList(A);
return 0;
}
"Post весь код". Извините, это не так, как работает Stackoverflow. Мы не здесь, чтобы заполнить ваш код для вас. «Он пишет ошибку, которая разыменовывает неполный тип». Что это"? Компилятор? Программа? IDE? Пожалуйста, укажите * точную * ошибку, которая происходит. – kaylum
'поиск (A);' различная подпись. – BLUEPIXY
Спасибо за критику, улучшусь и сделаю лучше – AdomasArabella