2015-04-25 2 views
0
typedef struct num{ 
    int num; 
    int pre; 
    struct num* next; 
}Num; 

Num list[10]= 
{{3,4},{2,1},{6,5},{7,2},{4,3},{3,9},{5,6},{1,3},{8,4},{10,0} 
}; 

#include <stdio.h> 

int main(){ 

    int cnt; 
    Num *ptr = NULL; 

    Num tempTwo; 
    for (cnt = 0; cnt < 10; cnt++) { 
     tempTwo = list[cnt]; 
     ptr->next = &tempTwo; //Error 
     ptr = ptr->next; 
    } 

    for (cnt = 0; cnt<10; cnt++) { 
     printf("num: %d, pre: %d\n",ptr->num,ptr->pre); 
     ptr = ptr->next; 
    } 
} 

Я хочу связать список с массивом 'list' с помощью указателя ptr.массив для создания связанного списка

Error: Bad access 

Что я могу сделать для решения этой проблемы?

+0

'ptr-> следующая = & tempTwo;' выдает ошибку, потому что вы установите 'Num * PTR = NULL;' перед первая итерация цикла. –

+0

Но Xcode инициализирует, и если я не делаю этого num, это всего лишь 10, а pre всегда 0. – Kate

+0

Вы не можете указывать на какой-либо указатель 'NULL': у него нет цели. –

ответ

0

Это должно сделать трюк

#include <stdio.h> 

typedef struct num{ 
    int num; 
    int pre; 
    struct num* next; 
}Num; 

Num list[10]= { 
    {3,4},{2,1},{6,5},{7,2},{4,3},{3,9},{5,6},{1,3},{8,4},{10,0} 
}; 

int main(){ 

    int cnt; 
    Num *head, *ptr; 

    list[9].next = NULL;    // marks the end of the list 
    for (cnt=8; cnt>=0; cnt--) 
     list[cnt].next = &list[cnt+1]; // point to next list item 
    head = &list[0];     // point to first list item 

    // test 
    ptr = head; 
    while (ptr) { 
     printf ("%d %d\n", ptr->num, ptr->pre); 
     ptr = ptr->next; 
    } 
    return 0; 
} 

выход программы:

3 4 
2 1 
6 5 
7 2 
4 3 
3 9 
5 6 
1 3 
8 4 
10 0 
+0

?????? Что ?????? – Kate

+0

О, я смутился с моим кодом – Kate

+0

Спасибо !!!!!!! Тогда у меня есть вопрос. Почему вы делаете заявление for reverse? – Kate

Смежные вопросы