c - 单链表输出不希望的零
问题描述
我正在尝试做一个简单的链表,以便在程序调用时打印作为参数插入的数字。但是,它会在输出的最终结果上打印出不希望出现的零。我猜这是打印的 NULL,但我不知道如何摆脱它。我仍然了解链表的基础知识。谢谢你。
/* */
#include <stdio.h>
#include <stdlib.h>
/* */
#define NUMERO_DE_ARGUMENTOS_MINIMO 3
#define EOS '\0'
/* */
#define OK 0
#define ARGUMENTO_NULO 1
#define ARGUMENTO_VAZIO 2
#define PONTEIRO_NULO 3
#define NUMERO_DE_ARGUMENTOS_INVALIDO 101
/* */
typedef struct estruturaNumeros
{
unsigned numero;
struct estruturaNumeros *proximaEstrutura;
} tipoNumeros;
/* */
int
main(int argc, char **argv)
{
/* */
tipoNumeros *numeroInicial, *proximoNumero;
char *validacao;
unsigned indiceArgumento;
/* */
numeroInicial = (tipoNumeros *) malloc(sizeof(tipoNumeros));
/* */
if (argc < NUMERO_DE_ARGUMENTOS_MINIMO)
{
printf("\n\n\nNumero de argumentos invalido.\n\n\n\n");
exit(NUMERO_DE_ARGUMENTOS_INVALIDO); /* Programa abortado. */
} /* if */
/* */
if (!numeroInicial)
{
printf("\n\n\nPonteiro nulo.\n\n\n\n");
exit(PONTEIRO_NULO); /* Programa abortado. */
} /* if */
/* */
proximoNumero = numeroInicial;
/* */
for (indiceArgumento = 1; indiceArgumento < argc; indiceArgumento++)
{
proximoNumero->numero = strtoul(*(argv + indiceArgumento), &validacao, 10);
proximoNumero->proximaEstrutura = (tipoNumeros *) malloc(sizeof(tipoNumeros));
proximoNumero = proximoNumero->proximaEstrutura;
} /* for */
/* */
proximoNumero->proximaEstrutura = NULL;
proximoNumero = numeroInicial;
/* */
printf("\n\n\n");
/* */
while (proximoNumero != NULL)
{
printf("%u\n", proximoNumero->numero);
proximoNumero = proximoNumero->proximaEstrutura;
} /* while */
/* */
printf("\n\n\n");
return OK; /* Codigo retornado com sucesso. */
} /* main */
/* output */
UBUNTU 05 --> ./exemplo_lista_encadeada_004 1 2 3
1
2
3
0
解决方案
while 测试应该是测试结构指针proximaEstrutura
。
您的代码使用最终(或终端)节点。终端节点的 proximaEstrutura 成员初始化为 NULL。
while (proximoNumero->proximaEstrutura != NULL)
{
printf("%u\n", proximoNumero->numero);
proximoNumero = proximoNumero->proximaEstrutura;
}
推荐阅读
- android - 当我的应用不在前台时如何检查用户不活动
- ios - 在 WatchOS 上使用 AVAudioEngine 录制时阻止播放
- linux - 显式链接期间未找到函数 glGetString
- loops - 在子文件夹中的所有 html 文件上迭代运行 inscript 命令行工具
- git - 如何强制用 git repo 替换本地 repo
- python - Google AdWords API - AdGroupAdError CANNOT_CREATE_DEPRECATED_ADS
- swift - 将单元格添加到动态 UITableView 数据源 | 迅速
- r - 合并列:合并列有截断的数字
- javascript - 如何从一个承诺到另一个承诺中获得额外的数据?
- laravel - 如何在laravel和chartjs中修复这个错误数组到字符串的转换?