【发布时间】:2014-05-14 12:12:00
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
typedef struct lista
{
char instrumento;
char *nota;
int inst;
struct lista *prox;
}melodia;/*com typdef basta usar t_melodia não é preciso usar struct melodia*/
melodia *inicio, *fim; ///dois apontadores para definir o inico e o fim da lista
void inserir_inicio(char *v)
{
if(inicio==NULL)
{
inicio = malloc(sizeof(melodia));
inicio->nota = v;///nota fica com o valor recebido
inicio->prox = NULL;///colocamos o prox para NULL
fim = inicio;
}
else
{
melodia *temp = malloc(sizeof(melodia));
temp->nota = v;
temp->prox = inicio;
inicio = temp; /// Colocamos o novo elemento no inicio
}
printf("Inserido no inicio\n");
}
void imprimir_lista()
{
melodia *aux = inicio;
printf("Lista:\n");
while(aux!=NULL)
{
printf("%s", aux->nota);
aux = aux->prox; /// proximo
}
printf("\n\n");
}
int main()
{
int i = 0;
char n[100];
while(i<5)
{
scanf("%s",n);
inserir_inicio(n);
i++;
}
imprimir_lista();
}
我认为问题出在我的函数 imprimir_lista 中,我只是无法将我插入列表中的值打印到控制台....(如果您问自己,代码是葡萄牙语,对不起对于我的英语)
【问题讨论】:
-
您的编译器应该针对该代码抛出多个警告。首先修复这些警告。
-
(1) at
inserir_inicio:inicio->nota = v;: (char nota;,char *v) 不同的类型。 -
添加一些打印输出,在调试器下运行,几分钟你就会明白一切
-
现在有一个beta stackoverflow site in portuguese。你可能会喜欢它:)
-
到达那里,这样的指针对我来说是新的。所以现在我可以打印但它只打印我在列表中插入的最后一件事