2014-01-08 3 views
0

Я хочу создать связанный список чисел от 1 до 1000 и напечатать числа. Im с использованием функции createList() для создания списка и printList() для печати элементов. Но следующий код сбой. Может кто-нибудь исправить. Я новичок в связанный списокСоздание связанного списка и печать элементов?

#include<stdio.h> 
#include<stdlib.h> 

struct node 
{ 
int data; 
struct node* link; 
}; 

struct node* head; 

void deleteNode() 
{ 

} 

void createList() 
{ 
    int i; 
    struct node* temp = (struct node*)malloc(sizeof(struct node)); 
    head = temp; 
    struct node* temp1 = (struct node*)malloc(sizeof(struct node)); 
    for(i=0;i<10;i++) 
    { 
     temp->data = i+1; 
     temp->link = temp1; 
     temp1->link = temp++; 
     temp1++; 
    } 
} 

void printList() 
{ 
    struct node* temp = (struct node*)malloc(sizeof(struct node)); 
    temp = head; 
    while(temp != NULL) 
    { 
     printf("%d ", temp->data); 
     temp = temp->link; 
    } 
} 

int main() 
{ 
    head = NULL; 
    createList(); 
    printList(); 
    return 0; 
} 
+0

Что вы делаете? Создание всего двух элементов и размещение 10 элементов внутри? –

+0

Обратитесь и исправьте свой метод создания. Http://www.c4learn.com/data-structure/c-program-to-create-singly-linked-list/ –

+0

'Но следующий код сбой' - отладчик может скажите, какая строка кода рушится, это полезная информация для кого-то, кто поможет вам, или для вас, чтобы помочь себе. Что вы ожидаете от 'temp ++' и 'temp1 ++'? – Mike

ответ

3
void createList(){ 
    int i, size = 10; 
    struct node* temp = malloc(sizeof(struct node)); 
    head = temp; 

    for(i=0;i<size;i++){ 
     temp->data = i+1; 
     temp->link = i < size - 1 ? malloc(sizeof(struct node)) : NULL; 
     temp = temp->link; 
    } 
} 

void createList(){ 
    int i, size = 10; 
    struct node* temp = malloc(size*sizeof(struct node)); 
    head = temp; 

    if(temp){ 
     for(i=0;i<size;i++){ 
      temp->data = i+1; 
      temp->link = temp + 1; 
      ++temp; 
     } 
     temp[-1].link = NULL; 
    } 
} 
0
void createList() 
{ 
    int i; 
    struct node *temp, *loc_head; 
    loc_head = head; 

    for(i=0;i<10;i++) 
    { 
     struct node* newnode = malloc(sizeof(struct node)); 
     newnode->data = i+1; 
     newnode->link = NULL; 
     if(head == NULL) { 
      head=newnode; 
      loc_head = newnode; 
     } 
     else { 
      head->link = newnode; 
      head = newnode; 
     } 
    } 
    head = loc_head; 
} 

don't typecast the result of malloc

-1

Учитывая массив элементов, создать связанный список из массива (один новый узел за элемент, используя функцию, которая добавляет узлы в конец списка).

+0

Итак, в чем вопрос? Никто не выполняет свое задание, если сначала не проявляешь никаких усилий. – Warlord

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