連結リストによるデータ管理プログラムの解説
★から★までのプログラムが、各行ごとにどのような動きをしているのか簡潔な言葉で説明を書いていただきたいのです。必要がないと判断した行はとばして下さって構いません。
(例) 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;
}