#include <stdio.h> #include <stdlib.h> struct cell{ double data; struct cell *next; }; void add_list(struct cell **lh,double m){ struct cell *p;//リストの先頭を指すように struct cell *q; //挿入用 p=*lh; printf("bbb%p,%p,%lf\n",p,*lh,m); // 動的確保する printf("ccc\n"); q=(struct cell*)malloc(sizeof(struct cell)); q->data = m; printf("data=%lf\n",q->data ); // mを入れるべき挿入場所を見つける while( p->next != NULL && p->next->data < m ){ p = p->next; } printf("ddd\n"); // 挿入場所にデータを挿入する q->next = p->next; p->next = q; } void show_list(struct cell *lh){ if(lh == NULL)printf("\n"); else{ printf("->%lf",lh->data); show_list(lh->next); } } void free_list(struct cell *lh){ struct cell *p; p=lh; if(lh==NULL)printf("\n"); else{ printf("%lfの格納された要素を開放しました\n",lh->data ); free(p); free_list(lh->next); } } int main(void){ double n; struct cell dummy; //常に先頭扱いのダミーレコード struct cell *listhead =&dummy; while(1){ printf("0以上のデータを入力してください:"); scanf("%lf",&n); if(n<=0)break; printf("aaa\n"); add_list(&listhead,n); printf("eee\n"); show_list(listhead); } show_list(listhead); free_list(listhead); return 0; }
プログラムがadd_listのwhileで止まるのですが
どういけないのかが分からないので教えてほしいです
実行結果は
0以上のデータを入力してください:5
aaa
bbb0061FF08,0061FF08,5.000000
ccc
data=5.000000
のようになっています
回答2件
あなたの回答
tips
プレビュー