アルファベッド順に出力したいのに
Annaでループしてしまいます、
もしよろしければ修正点をお願いします。
#include <stdio.h>
typedef struct list{
char name[10];
int next;
}NODE;
void main(void)
{
NODE tbl[]={
{"Ben",4},{"Dennis",3},{"Anna",2},{"Emma",1},{"Candy",0}
};
int head = 2,i;
printf("*** リストの内容 ***\n");
i=head;
while(i!=99){
printf("%s\n", tbl[i].name);
i=tbl[i].next;
}
}
リストになってないと思います。
char tbl[5][32]={"Ben","Dennis","Anna","Emma","Candy"};
などにして、ソートすれば良いと思います。
tbl[2]のnextが2ですから、無限ループするのは当然でしょう。
> {"Ben",4},{"Dennis",3},{"Anna",2},{"Emma",1},{"Candy",0}
ここは、逆順にすべきでは。配列は0からスタートするんだから。
もしやるなら
{"Candy",1},{"Emma",2},{"Anna",3},{"Dennis",4}, {"Ben",5}
こうでは。
あと、headは0にして。
ただ、もし、リンクリストのつもりなら、まちがってますよ。作り方
(こういう構造体だ、といわれたら、納得するけど)
それにソートしてないと、アルファベット順にはならないです。
あ、あと
>while(i!=99){
は
while(i!=5){
としないと、だめですね。
配列の最大数を、定数で書いておくのが良いかと。
皆様ありがとうございます。
色々いじくって正常に動きました
ツイート | ![]() |