问题是我不打印列表中的" F",如果没有给我发送以下消息:
Segment violation (`core 'generated)
我认为问题在于我在
的循环中移动的方式#include <stdio.h>
#include <stdlib.h>
#define T 5
int menu();
struct nodo{
/*Declaración de los campos*/
char sexo;
struct nodo *sig; //Uso de sig como apuntador dentro de la lista al siguiente nodo
};
int tam= sizeof(struct nodo); //Se calcula el tamaño de bytes
int main(){
int i, totalf=0;
struct nodo *lista=(struct nodo *)malloc(tam ); //Se reserva la cantidad de memoria a usar
lista=NULL;
printf("\nPrograma que lee los sexos alumnos e imprima el numero de mujeres");
for(i=0; i<T; i++) //Ciclo para ingresar los datos
{
struct nodo *p =(struct nodo *) malloc(tam);
printf("\nIngrese el dato %d: ",i+1);
scanf(" %c", &(*p).sexo);
(*p).sig=lista;
}
for(i=0; i<T; i++)
{
struct nodo *p =(struct nodo *) malloc(tam);
p=lista;
if((*p).sexo =='F')
{
totalf=totalf+1;
}
}
printf("El total de mujeres es: %i\n", totalf);
}
答案 0 :(得分:0)
您的代码中存在很多问题,例如
struct nodo *lista=(struct nodo *)malloc(tam );
lista=NULL;
这里首先分配内存,然后立即将其设为NULL,这没有任何意义,而是不为lista
分配任何内存并初始化为NULL
,这将是是你的headptr
for(i=0; i<T; i++){ /*.. */ }
中没有建立b / w节点的链接。了解如何添加或链接节点。这是工作人员,我在评论中提出了解释
struct nodo{
/*Declaración de los campos*/
char sexo;
struct nodo *sig; //Uso de sig como apuntador dentro de la lista al siguiente nodo
};
int tam= sizeof(struct nodo); //Se calcula el tamaño de bytes
int main(){
int i, totalf=0;
struct nodo *lista = NULL; /* this is your head pointer */
printf("\nPrograma que lee los sexos alumnos e imprima el numero de mujeres");
for(i=0; i<T; i++) {
struct nodo *p =(struct nodo *) malloc(tam); /* new node everytime */
printf("\nIngrese el dato %d: ",i+1);
scanf(" %c", &(*p).sexo); /* put daata into memory */
(*p).sig = lista; /* make new node next as head node */
lista = p; /*update the head node */
}
struct nodo *temp = lista; /* temp points to head node */
for(i=0; i<T; i++) {
if((*temp).sexo =='F'){ /* check temp data matches or not */
totalf=totalf+1;
}
temp = (*temp).sig; /* this you forget ? update temp */
}
printf("El total de mujeres es: %i\n", totalf);
return 0;
}
阅读任何优秀的C书以学习数据结构。