- 締切済み
連結リストによるデータ管理プログラムの解説
★から★までのプログラムが、各行ごとにどのような動きをしているのか簡潔な言葉で説明を書いていただきたいのです。必要がないと判断した行はとばして下さって構いません。 (例) printf("hello!"); …hello!と表示 if(a==0){ …aが0なら #include <stdio.h> #include <stdlib.h> struct CELL{ struct CELL *next; char data; }; /* Head CELL CELL CELL +-------+ +-------+ +-------+ +-------+ | ? | *----> | 5 | *----> | 6 | *----> | 8 | / | +-------+ +-------+ +-------+ +-------+ */ main(void){★ struct CELL head; struct CELL *p, *wp; char a; head.next=NULL; printf("?\n"); scanf("%c %*c",&a); while(a!='0'){ printf("mode?\n"); scanf("%c",&mode); if(mode=="a"){ p=&head; while(p->next!=NULL){ p=p->next; } wp=(struct CELL *)malloc(sizeof(struct CELL)); if(wp==NULL){ printf("cannot allocate enough memory.\n"); return 0; } p->next=wp; p->next->data=a; p->next->next=NULL; printf("?\n"); scanf("%c %*c",&a); } if(mode=="p"){ printf("\n\nNow...\n"); p=&head; while(p->next!=NULL){ printf("%c --> \n",p->next->data); p=p->next; } printf("NULL\n"); if(mode=="d"){ p=&head; while(p->next->data==a){ p=p->next; } if(p==NULL) break; wp=p->next->next; while(p->next->data==a) p=wp;★ } } return 0; }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
たいへん申し訳ありませんが、コンパイルが通らない(★印のせいではないですよ)コードの説明をすることはできません。
- kmee
- ベストアンサー率55% (1857/3366)
重複してもしょうがないので、まずは、あなたがわかるところを書いてください。 あと、プログラムを覚えるコツですが > if(a==0){ …aが0なら こんな、プログラムを直訳しただけのコメントなんて、何の役にも立ちません。見りゃわかるんですから。 この例だったら、 aが何を表すもので、それが0に等しいとはどんな意味か、が重要です。 そういうことを考えるようにしましょう。