アプリ版:「スタンプのみでお礼する」機能のリリースについて

#include <stdio.h>
struct node{
char no;
struct node *next;
};
struct node head;

int main(void)
{
struct node *new, *cur;
char n;
while(1){
scanf("%s", &n);
if(n=='-'){
break;
}
new=(struct node*)malloc(sizeof(struct node));
if(new==NULL){
printf("error\n");
return(0);
}
new->no=n;
new->next=head,next;
head.next=new;
}
cur=head.next;
while(cur!=NULL);
printf("%s",cur);
putchar('\n');
cur=cur->next;
}
free(new);
new=free;
return(0);
}

上のプログラムを書き換えて
(1),’-’が入力されたとき文字の入力を終了しそれまでに格納された文字を出力せよ。
ただし、リストに格納する際リストの最後に格納するようにせよ。

a(入力)
b(入力)
c(入力)
-(入力)
a(出力)
b(出力)
c(出力)

(2),’-’が入力された後,次に入力された文字を持つ要素をリストから削除し、
最後にリスト中の全て文字を出力するようにせよ

a(入力)
b(入力)
c(入力)
-(入力)
b(入力)
c(出力)
a(出力)

このような問題なのですが、分かりません。
どなたか教えてください。

A 回答 (2件)

このプログラムで「a, b, c, - と順に入力したとき」にどうして「c, b, a と出力される」のか, ちゃんと理解できていますか? 他人に説明できますか?


きちんと理解できていて絵を使って説明できるなら, (1) にしろ (2) にしろ「期待される動作を絵に描く」ことはできるはずです.

この回答への補足

上のプログラムは図にかくことができるのですが、
問題のプログラムが図に起こせません
(1)は構造体をもう一つ宣言したほうがいいのでしょうか?

補足日時:2009/11/09 21:07
    • good
    • 0

えぇと.... その「上のプログラム」からして既に間違っているのですが....


ちなみに何がわからないのですか?

この回答への補足

上のプログラムは
a(入力)
b(入力)
c(入力)
-(入力)
と入力した時
c(出力)
b(出力)
a(出力)
するプログラムです。
問題はこれを元に解くことは既に与えられた条件ですが、
どこを改変すればいいのかが分かりません。

補足日時:2009/11/09 07:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!