创建链接列表并打印元素?

时间:2014-01-08 18:03:57

标签: c pointers linked-list

我想创建一个从1到1000的数字链接列表并打印数字。 我使用函数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;
}

3 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分: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

答案 2 :(得分:-1)

给定一个元素数组,从数组创建一个链表(每个节点一个新节点) 元素,使用将节点添加到列表末尾的函数。)