显示链表中每一个结点数值信息的程序,不知道哪儿出了问题,帮忙看一下
#include<stdlib.h>#include<stdio.h>
#define N 100
typedef enum{carre, rond, triangle} forme; //定义枚举类型forme//
void afficherForme(forme f){
switch(f){
case carre : printf("carré");break;
case rond : printf("rond");break;
case triangle : printf("triangle");break;
default : printf("forme inconnue");
}
}
typedef struct noeud{ //定义结点,每个结点包含一个forme类型的变量f
forme f; 和下一个内存块的首地址//
struct noeud *suivant; //suivant用来记录下一个内存块的首地址//
} *ListeDeFormes;
ListeDeFormes lf;
int longueur(ListeDeFormes l){ //返回值为结点的个数//
int i=1;
while(l->suivant!=NULL){
l=l->suivant;
i++;
}
return i;
}
forme ieme(ListeDeFormes l, int r){ //返回第r个结点中,成员f的值//
int i=1;
while(i<=longueur(l)){
if(i==r) return l->f;
l=l->suivant;
i++;
}
}
int main(void){
char s[N];
lf=s;
lf->f=rond;
lf->suivant=lf+1;
ListeDeFormes s1=lf->suivant;
s1->f=triangle;
s1->suivant=s1+1;
ListeDeFormes s2=s1->suivant;
s2->f=carre;
s2->suivant=NULL; //定义三个结点,成员f依次为 rond, triangle, carre//
int i;
printf("Le contenu de lf est :\n");
for(i=1;i<=longueur(lf);i++) {
afficherForme(ieme(lf,i)); //依次显示三个结点的数值信息f//
printf("\n");
}
return 0;
}
运行结果:
Le contenu de lf est :
rond
triangle
rond
问题:定义的三个结点成员f的值依次为rond, triangle, carre,为什么显示出来成了rond,triangle,rond?