Я новичок в C. Я знаком с Python, Java, C#. Таким образом, у меня проблемы с указателями.Бесконечная петля и указатели
Я пытаюсь реализовать связанный список в C, используя структуры. На данный момент программа создает член корня, затем добавляет еще один член, чтобы иметь список из 2 связанных членов. Затем он вызывает метод печати, который должен проходить через каждый элемент и печатать их. К сожалению, программа застревает в бесконечном цикле и, похоже, печатает адреса member-> data вместо самих данных.
Как я уже говорил, я знаком с несколькими языками ООП. Эта проблема разочаровывает, потому что простой связанный список - это то, что я должен вытащить за несколько минут. Любая помощь? Код ниже.
#include<stdio.h>
#include<stdlib.h>
struct Member{
int data;
struct Member *next;
};
struct Member *createMember(int i){
struct Member *new;
new = malloc(sizeof(struct Member));
new->data = i;
return new;
}
void print(struct Member *root){
struct Member *current = root;
while(current->next != NULL){
printf("%i, ", current->data);
current = current->next;
}
printf("%i", current->data);
}
main(){
struct Member *root;
root = createMember(15);
root->next = createMember(12);
print(root);
}
ли он запускал его под отладчиком? – pm100
'createMember' никогда не устанавливает ссылку' next' созданной структуры в NULL. Ваш цикл печати преследует неопределенный указатель от глубины. Если вы собираетесь тестировать NULL, вам лучше убедиться, что в конце концов вы там. – WhozCraig
Я запустил код в gcc и нет бесконечного цикла, и он напечатал как связанные данные 'data'. Но твоя утечка памяти. –