Welp Я, наконец, достиг указателей после очень долгого времени. Я понимаю, что мои программы приобретут элегантность и силу. К сожалению, моего понимания, похоже, не хватает. Я работаю над программированием Кочана в C 4-м издании, и это упражнение 10.3. Я должен добавить запись в начало связанного списка, однако то, что я думаю, должно работать, не работает.
#include <stdbool.h>
struct entry
{
int value;
struct entry *next;
};
//n0_1 list_pointer
void insertEntry(struct entry *what, struct entry *where)
{
what->next = where->next;
where->next = what;
}
int main (void)
{
struct entry n1, n2, n3, n4, n5,n0_1, n2_3, n3_4, n4_5;
struct entry *list_pointer = &n1;
n1.value = 100;
n2.value = 200;
n3.value = 300;
n4.value = 400;
n5.value = 500;
n1.next = &n2;
n2.next = &n3;
n3.next = &n4;
n4.next = &n5;
n5.next = (struct entry*)0;
n0_1.value = 50;
n2_3.value = 250;
n3_4.value = 350;
n4_5.value = 450;
insertEntry(&n0_1, list_pointer);
insertEntry(&n3_4, &n3);
insertEntry(&n4_5, &n4);
while (list_pointer != (struct entry *)0){
printf("%i\n", list_pointer->value);
list_pointer = list_pointer->next;
}
return 0;
}
Так что я разбиваю то, что происходит следующим образом -
n0_1.next = List_pointer.next //ok n0_1.next points to whatever the list pointer was.
list_pointer.next = n0_1 //doesn't that make list pointer point to n0_1?
Любое руководство будет оценено, спасибо заранее. Естественно, я буду чувствовать себя идиотом, когда увижу, что я делаю неправильно.