0

挿入機能の何が問題なのかわかりません。

基本的に、メイン関数では、ユーザーに整数を入力するように求めます。これは、リストを再帰的にトラバースし、番号を順番に挿入する必要があります。他にご不明な点がございましたら、お気軽にお問い合わせください。

リストを印刷すると、0は2回しか印刷されません。

In the main:
            **This is looped**
    printf("Enter the value you want to insert: ");
    scanf(" %d", &integer);
    current = insert(&head, integer);
    temp = current;

    while(temp)
    {
        printf("%d\n", temp->num);
        temp = temp->next;
    }


node* insert(node** head, int integer)
{
    node* temp = malloc(sizeof(node));
    node* temp1;
    node* new;

    if(*head == NULL)
    {
        temp->num = integer;
        temp->next = *head;
        *head = temp;
    }
    else if((*head)->num > integer)
    {
        temp = *head;
        temp1 = temp->next; //breaks the link
        temp->next = new;   //creates a new node
        new->num = integer;  //adds int
        new->next = temp1;   //links new node to previously broken node
        *head = temp;
    }

    else
        insert(&((*head)->next), integer);

    return(temp);
}

どうもありがとう!

4

2 に答える 2

3
if(*head == NULL)
{
    (*head)->next == temp;
    temp->num = integer;
    temp->next = *head;
    *head = temp;
}

これは間違っており、* headがNULLであり、したがって(*head)->next無効であるため、無効な読み取りが発生します。から読みますNULL + offset。データ型offsetの定義によって異なりますnode

于 2013-03-18T11:31:52.997 に答える
1
while(temp)
{
    printf("%d\n", current->num);
    temp = temp->next;
}

temp->numの代わりに印刷したいと思いますcurrent->num

于 2013-03-18T11:36:13.633 に答える