質問編集履歴
10
修正
    
        title	
    CHANGED
    
    | 
         @@ -1,1 +1,1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            c言語 リスト  
     | 
| 
      
 1 
     | 
    
         
            +
            c言語 リスト ノード
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,19 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ```C
         
     | 
| 
       2 
     | 
    
         
            -
            #include <stdio.h>
         
     | 
| 
       3 
     | 
    
         
            -
            #include <stdlib.h>
         
     | 
| 
       4 
     | 
    
         
            -
            struct node{
         
     | 
| 
       5 
     | 
    
         
            -
                char element;
         
     | 
| 
       6 
     | 
    
         
            -
                struct node *next;
         
     | 
| 
       7 
     | 
    
         
            -
            };
         
     | 
| 
       8 
2 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
            struct node *initlist() {
         
     | 
| 
       10 
     | 
    
         
            -
                struct node *n;
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                n = (struct node*)malloc(sizeof(struct node));
         
     | 
| 
       13 
     | 
    
         
            -
                n->next = NULL;
         
     | 
| 
       14 
     | 
    
         
            -
                return n;
         
     | 
| 
       15 
     | 
    
         
            -
            }
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
3 
     | 
    
         
             
            void insert(struct node *p, char x) {
         
     | 
| 
       18 
4 
     | 
    
         
             
                struct node *n;
         
     | 
| 
       19 
5 
     | 
    
         | 
| 
         @@ -23,44 +9,7 @@ 
     | 
|
| 
       23 
9 
     | 
    
         
             
                n->next = p->next;
         
     | 
| 
       24 
10 
     | 
    
         
             
                p->next = n;
         
     | 
| 
       25 
11 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
             ```
         
     | 
| 
       27 
13 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                
         
     | 
| 
       29 
     | 
    
         
            -
            }
         
     | 
| 
       30 
14 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
            void printlist(struct node *p) {
         
     | 
| 
       32 
     | 
    
         
            -
                if(p->next == NULL) {
         
     | 
| 
       33 
     | 
    
         
            -
                    putchar('\n');
         
     | 
| 
       34 
     | 
    
         
            -
                }else {
         
     | 
| 
       35 
     | 
    
         
            -
                    p = p->next;
         
     | 
| 
       36 
     | 
    
         
            -
                    putchar(p->element);
         
     | 
| 
       37 
     | 
    
         
            -
                    printlist(p);
         
     | 
| 
       38 
     | 
    
         
            -
                    putchar(p->element);
         
     | 
| 
       39 
     | 
    
         
            -
                }
         
     | 
| 
       40 
     | 
    
         
            -
            }
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
            int main(int argc, char *argv[]) {
         
     | 
| 
       43 
     | 
    
         
            -
                struct node *list, *head;
         
     | 
| 
       44 
     | 
    
         
            -
                char *p;
         
     | 
| 
       45 
     | 
    
         
            -
                if (argc<2)
         
     | 
| 
       46 
     | 
    
         
            -
                    exit(-1);
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                list = initlist();
         
     | 
| 
       49 
     | 
    
         
            -
                p = argv[1];
         
     | 
| 
       50 
     | 
    
         
            -
                for (; *p; p++)
         
     | 
| 
       51 
     | 
    
         
            -
                    insert(list, *p);
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                printlist(list);
         
     | 
| 
       54 
     | 
    
         
            -
                printf("\n");
         
     | 
| 
       55 
     | 
    
         
            -
                for (; list; ) {
         
     | 
| 
       56 
     | 
    
         
            -
                    head = list;
         
     | 
| 
       57 
     | 
    
         
            -
                    list = list->next;
         
     | 
| 
       58 
     | 
    
         
            -
                    free(head);
         
     | 
| 
       59 
     | 
    
         
            -
                }
         
     | 
| 
       60 
     | 
    
         
            -
                return 0;
         
     | 
| 
       61 
     | 
    
         
            -
            }
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
            ```
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
15 
     | 
    
         
             
            このコードで文字を追加(例:abc)すると返ってくる値がcbaとなってしまいます。例えば   ./a.out abc としたとき abc と返ってきてほしいです。値の返し方はリストの先頭から順に返していくやり方です。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。insert内を変えたいのですがどう変えたら良いのかわかりません。アドバイスを頂ければ幸いです。
         
     | 
9
修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -63,4 +63,4 @@ 
     | 
|
| 
       63 
63 
     | 
    
         
             
            ```
         
     | 
| 
       64 
64 
     | 
    
         | 
| 
       65 
65 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
            このコードで文字を追加(例:abc)すると返ってくる値がcbaとなってしまいます。例えば   ./a.out abc としたとき abc と返ってきてほしいです。値の返し方はリストの先頭から順に返していくやり方です。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。 
     | 
| 
      
 66 
     | 
    
         
            +
            このコードで文字を追加(例:abc)すると返ってくる値がcbaとなってしまいます。例えば   ./a.out abc としたとき abc と返ってきてほしいです。値の返し方はリストの先頭から順に返していくやり方です。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。insert内を変えたいのですがどう変えたら良いのかわかりません。アドバイスを頂ければ幸いです。
         
     | 
8
修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ```C
         
     | 
| 
       1 
     | 
    
         
            -
            include <stdio.h>
         
     | 
| 
      
 2 
     | 
    
         
            +
            #include <stdio.h>
         
     | 
| 
       2 
     | 
    
         
            -
            include <stdlib.h>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #include <stdlib.h>
         
     | 
| 
       3 
4 
     | 
    
         
             
            struct node{
         
     | 
| 
       4 
5 
     | 
    
         
             
                char element;
         
     | 
| 
       5 
6 
     | 
    
         
             
                struct node *next;
         
     | 
| 
         @@ -59,5 +60,7 @@ 
     | 
|
| 
       59 
60 
     | 
    
         
             
                return 0;
         
     | 
| 
       60 
61 
     | 
    
         
             
            }
         
     | 
| 
       61 
62 
     | 
    
         | 
| 
      
 63 
     | 
    
         
            +
            ```
         
     | 
| 
       62 
64 
     | 
    
         | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
       63 
66 
     | 
    
         
             
            このコードで文字を追加(例:abc)すると返ってくる値がcbaとなってしまいます。例えば   ./a.out abc としたとき abc と返ってきてほしいです。値の返し方はリストの先頭から順に返していくやり方です。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。「」内をどう変えたら良いのかわかりません。アドバイスを頂ければ幸いです。
         
     | 
7
修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -60,4 +60,4 @@ 
     | 
|
| 
       60 
60 
     | 
    
         
             
            }
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
       62 
62 
     | 
    
         | 
| 
       63 
     | 
    
         
            -
            このコードで文字を 
     | 
| 
      
 63 
     | 
    
         
            +
            このコードで文字を追加(例:abc)すると返ってくる値がcbaとなってしまいます。例えば   ./a.out abc としたとき abc と返ってきてほしいです。値の返し方はリストの先頭から順に返していくやり方です。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。「」内をどう変えたら良いのかわかりません。アドバイスを頂ければ幸いです。
         
     | 
6
修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            include <stdio.h>
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 2 
     | 
    
         
            +
            include <stdlib.h>
         
     | 
| 
       3 
3 
     | 
    
         
             
            struct node{
         
     | 
| 
       4 
4 
     | 
    
         
             
                char element;
         
     | 
| 
       5 
5 
     | 
    
         
             
                struct node *next;
         
     | 
5
修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,6 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #include <stdio.h>
         
     | 
| 
       2 
2 
     | 
    
         
             
            #include <stdlib.h>
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
3 
     | 
    
         
             
            struct node{
         
     | 
| 
       5 
4 
     | 
    
         
             
                char element;
         
     | 
| 
       6 
5 
     | 
    
         
             
                struct node *next;
         
     | 
4
修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,20 +1,64 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #include <stdio.h>
         
     | 
| 
      
 2 
     | 
    
         
            +
            #include <stdlib.h>
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       1 
4 
     | 
    
         
             
            struct node{
         
     | 
| 
       2 
5 
     | 
    
         
             
                char element;
         
     | 
| 
       3 
6 
     | 
    
         
             
                struct node *next;
         
     | 
| 
       4 
7 
     | 
    
         
             
            };
         
     | 
| 
       5 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
            struct node *initlist() {
         
     | 
| 
      
 10 
     | 
    
         
            +
                struct node *n;
         
     | 
| 
       6 
11 
     | 
    
         | 
| 
      
 12 
     | 
    
         
            +
                n = (struct node*)malloc(sizeof(struct node));
         
     | 
| 
      
 13 
     | 
    
         
            +
                n->next = NULL;
         
     | 
| 
      
 14 
     | 
    
         
            +
                return n;
         
     | 
| 
      
 15 
     | 
    
         
            +
            }
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       7 
17 
     | 
    
         
             
            void insert(struct node *p, char x) {
         
     | 
| 
       8 
18 
     | 
    
         
             
                struct node *n;
         
     | 
| 
       9 
19 
     | 
    
         | 
| 
       10 
20 
     | 
    
         
             
                n = (struct node*)malloc(sizeof(struct node));
         
     | 
| 
       11 
21 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 22 
     | 
    
         
            +
                n->element = x;
         
     | 
| 
       13 
23 
     | 
    
         
             
                n->next = p->next;
         
     | 
| 
       14 
     | 
    
         
            -
                p->next = n; 
     | 
| 
      
 24 
     | 
    
         
            +
                p->next = n;
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
                
         
     | 
| 
      
 26 
     | 
    
         
            +
               
         
     | 
| 
       16 
27 
     | 
    
         | 
| 
      
 28 
     | 
    
         
            +
                
         
     | 
| 
       17 
29 
     | 
    
         
             
            }
         
     | 
| 
       18 
30 
     | 
    
         | 
| 
      
 31 
     | 
    
         
            +
            void printlist(struct node *p) {
         
     | 
| 
      
 32 
     | 
    
         
            +
                if(p->next == NULL) {
         
     | 
| 
      
 33 
     | 
    
         
            +
                    putchar('\n');
         
     | 
| 
      
 34 
     | 
    
         
            +
                }else {
         
     | 
| 
      
 35 
     | 
    
         
            +
                    p = p->next;
         
     | 
| 
      
 36 
     | 
    
         
            +
                    putchar(p->element);
         
     | 
| 
      
 37 
     | 
    
         
            +
                    printlist(p);
         
     | 
| 
      
 38 
     | 
    
         
            +
                    putchar(p->element);
         
     | 
| 
      
 39 
     | 
    
         
            +
                }
         
     | 
| 
      
 40 
     | 
    
         
            +
            }
         
     | 
| 
       19 
41 
     | 
    
         | 
| 
      
 42 
     | 
    
         
            +
            int main(int argc, char *argv[]) {
         
     | 
| 
      
 43 
     | 
    
         
            +
                struct node *list, *head;
         
     | 
| 
      
 44 
     | 
    
         
            +
                char *p;
         
     | 
| 
      
 45 
     | 
    
         
            +
                if (argc<2)
         
     | 
| 
      
 46 
     | 
    
         
            +
                    exit(-1);
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                list = initlist();
         
     | 
| 
      
 49 
     | 
    
         
            +
                p = argv[1];
         
     | 
| 
      
 50 
     | 
    
         
            +
                for (; *p; p++)
         
     | 
| 
      
 51 
     | 
    
         
            +
                    insert(list, *p);
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                printlist(list);
         
     | 
| 
      
 54 
     | 
    
         
            +
                printf("\n");
         
     | 
| 
      
 55 
     | 
    
         
            +
                for (; list; ) {
         
     | 
| 
      
 56 
     | 
    
         
            +
                    head = list;
         
     | 
| 
      
 57 
     | 
    
         
            +
                    list = list->next;
         
     | 
| 
      
 58 
     | 
    
         
            +
                    free(head);
         
     | 
| 
      
 59 
     | 
    
         
            +
                }
         
     | 
| 
      
 60 
     | 
    
         
            +
                return 0;
         
     | 
| 
      
 61 
     | 
    
         
            +
            }
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
       20 
64 
     | 
    
         
             
            このコードで文字を挿入(例:abc)すると返ってくる値がcbaとなってしまいます。例えば   ./a.out abc としたとき abc と返ってきてほしいです。値の返し方はリストの先頭から順に返していくやり方です。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。「」内をどう変えたら良いのかわかりません。アドバイスを頂ければ幸いです。
         
     | 
3
修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -17,4 +17,4 @@ 
     | 
|
| 
       17 
17 
     | 
    
         
             
            }
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
            このコードで文字を挿入(例:abc)すると返ってくる値がcbaとなってしまいます。例えば   ./a.out abc としたとき abc と返ってきてほしいです。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。「」内をどう変えたら良いのかわかりません。アドバイスを頂ければ幸いです。
         
     | 
| 
      
 20 
     | 
    
         
            +
            このコードで文字を挿入(例:abc)すると返ってくる値がcbaとなってしまいます。例えば   ./a.out abc としたとき abc と返ってきてほしいです。値の返し方はリストの先頭から順に返していくやり方です。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。「」内をどう変えたら良いのかわかりません。アドバイスを頂ければ幸いです。
         
     | 
2
情報の追加
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -17,4 +17,4 @@ 
     | 
|
| 
       17 
17 
     | 
    
         
             
            }
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
            このコードで文字を挿入(例:abc)すると返ってくる値がcbaとなってしまいます。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。「」内をどう変えたら良いのかわかりません。アドバイスを頂ければ幸いです。
         
     | 
| 
      
 20 
     | 
    
         
            +
            このコードで文字を挿入(例:abc)すると返ってくる値がcbaとなってしまいます。例えば   ./a.out abc としたとき abc と返ってきてほしいです。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。「」内をどう変えたら良いのかわかりません。アドバイスを頂ければ幸いです。
         
     | 
1
修正しました
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -9,11 +9,12 @@ 
     | 
|
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                n = (struct node*)malloc(sizeof(struct node));
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
             「n->element = x;
         
     | 
| 
       13 
13 
     | 
    
         
             
                n->next = p->next;
         
     | 
| 
       14 
     | 
    
         
            -
                p->next = n;
         
     | 
| 
      
 14 
     | 
    
         
            +
                p->next = n;  」
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       16 
17 
     | 
    
         
             
            }
         
     | 
| 
       17 
18 
     | 
    
         | 
| 
       18 
19 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
            このコードで文字を挿入(例:abc)すると返ってくる値がcbaとなってしまいます。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。アドバイスを頂ければ幸いです。
         
     | 
| 
      
 20 
     | 
    
         
            +
            このコードで文字を挿入(例:abc)すると返ってくる値がcbaとなってしまいます。リストの先頭に追加してしまっているのが原因だと思うんですが、リストの末尾に追加する方法がいまいちよくわかりません。「」内をどう変えたら良いのかわかりません。アドバイスを頂ければ幸いです。
         
     |