Одна из проблем, с которыми вы столкнулись, заключалась в том, что вы повторно использовали struct в объявлении указателя структуры после создания typedef, struct list *start;
. Кроме того, структура и typedef не могут иметь одно и то же имя. Вы получаете следующее:
cc -Wall test.c -o test
test.c: In function ‘main’:
test.c:13: error: ‘list_t’ undeclared (first use in this function)
test.c:13: error: (Each undeclared identifier is reported only once
test.c:13: error: for each function it appears in.)
test.c:13: error: ‘start’ undeclared (first use in this function)
test.c:13: error: ‘cur’ undeclared (first use in this function)
test.c:13: warning: left-hand operand of comma expression has no effect
test.c:16: error: expected expression before ‘)’ token
Вы можете использовать список структур везде и пропустить создание с помощью typedef. Использование typedef упрощает, как ваш код читается, как указано здесь: http://en.wikipedia.org/wiki/Struct_%28C_programming_language%29#typedef
Я переписал то, что у вас есть, чтобы скомпилировать его и понять его немного лучше, и поэтому я мог бы поместить некоторые данные в один узел.Я помню, что вся концепция struct typedef занимает немного времени, чтобы погрузиться, когда я учился C. Итак, не сдавайтесь.
#include <stdio.h>
#include <stdlib.h>
struct list {
int data;
struct list *next;
};
typedef struct list list_t;
int main()
{
list_t *start, *cur;
int i;
start = (list_t *) malloc(sizeof(list_t));
if (NULL != start)
{
cur = start; /* Preserve list head, and assign to cur for list trarversal. */
printf("\nEnter the data : ");
scanf("%d", &i);
cur->data = i;
cur->next = NULL;
cur = start;
while(cur != NULL)
{
printf("%d ", cur->data);
cur = cur->next;
}
}
else
{
printf("Malloc failed. Program ending.");
}
return 0;
}
Вы не должны размещать скриншоты ... – ThiefMaster
@ThiefMaster лучше чем размещение ничего (нет коды, нет журнала ошибок) .. – Krishnabhadra
Комментариев: 1. не отлитого возвращаемого значения 'таНос () '; 2. не используйте 'sizeof struct' как свой аргумент, а' sizeof (* start) '; 3. Почему 'typedef struct list * head', когда вы его никогда не используете? –