

**前提**  
c言語のリスト構造の課題でどうしてもうまくいかない部分があります。

**実現したいこと**  
プログラム自体にエラーは出ていないのですが、出力結果が逆順に表示されてしまい、insertしたい順番とは逆にinsertされてるみたいです。正しい出力結果通りになるように訂正すべき箇所のご指摘お願いします。

**該当のソースコード**

[code]

    #include <stdio.h>
    #include <stdlib.h>
    
    struct node{
        char element;
        struct node *next;
    };
    
    struct node *initlist() {
      struct node *n;
      n = (struct node *) malloc (sizeof (struct node) );
      n -> next = NULL;
      return n;
    }
    
    void insert(struct node *p, char x) {
      struct node *n;
      n = (struct node *)malloc(sizeof(struct node));
      n -> element = x;
      n -> next = p->next;
      p -> next = n;
    }
    void printlist(struct node *p) {
        if(p->next == NULL) {
            putchar('\n');
        }else {
            p = p->next;
            putchar(p->element);
            printlist(p);
            putchar(p->element);
        }
    }
    
    int main(int argc, char *argv[]) {
        struct node *list, *head;
        char *p;
        if (argc<2)
            exit(-1);
    
        list = initlist();
        p = argv[1];
        for (; *p; p++)
            insert(list, *p);
    
        printlist(list);
        printf("\n");
        for (; list; ) {
            head = list;
            list = list->next;
            free(head);
        }
        return 0;
    }
    
[/code]

**正しい出力結果**

[code]

    []$ gcc -Wall -std=c99 -o q5-1 q5-1.c
    []$ ./q5-1 abcde
    abcde
    edcba
    
[/code]

**自分の出力結果**

[code]

    []$ gcc -Wall -std=c99 -o q5-1 q5-1.c
    []$ ./q5-1 abcde
    edcba
    abcde
    
[/code]


CC BY-SA 4.0
2022-08-08T08:36:10.610
90435
2022-08-08T09:24:15.030
2022-08-08T08:54:44.377
3060
53909
question
c
c言語の連結リストで出力結果が逆順になってしまう対処法


他の質問サイトから教わり、以下のようにinsert関数を変更したらうまく出力できました。

[code]

    void insert(struct node *p, char x) {
      struct node *n;
      n = (struct node *)malloc(sizeof(struct node));
      n -> element = x;
      n -> next = NULL;
      while(p->next != NULL)
        p = p->next;
      p->next = n;
    }
    
[/code]


CC BY-SA 4.0
2022-08-08T09:13:51.807
90436
2022-08-08T09:24:15.030
2022-08-08T09:24:15.030
53909
53909
90435
answer