c言語の連結リストで出力結果が逆順になってしまう対処法

前提

c言語のリスト構造の課題でどうしてもうまくいかない部分があります。
プログラム自体にエラー話出ていないのですが、出力結果が逆順に表示されてしまい、insertしたい順番とは逆にinsertされてるみたいです。正しい出力結果通りになるように訂正すべき箇所のご指摘お願いします。

実現したいこと

プログラム自体にエラー話出ていないのですが、出力結果が逆順に表示されてしまい、insertしたい順番とは逆にinsertされてるみたいです。insert関数を修正して、正しい出力結果通りになるようにしたいのですが、自分は前からinsertするinsert関数しか知らないため、連結リストの最後尾にinsertできるinsert関数を教えてください。

発生している問題・エラーメッセージ

なし

該当のソースコード

C言語

#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;}

正しい出力結果

C言語

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

自分の出力結果

C言語

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

コメントを投稿

0 コメント