c - 从另一个链表中创建一个具有“可被 3 整除”数字的链表的 C 函数
问题描述
首先,我需要创建并显示一个以数字 1000 结尾的列表。这很好用。
然后,我想创建另一个列表,其中仅包含第一个列表中可被 3 整除的数字,但它不起作用。
最糟糕的是,它甚至没有告诉我发生了什么。它只是在执行中给出错误,但控制台什么也没说。
我将非常感谢任何帮助。
我都试过了。
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#define CANTIDAD_NUMEROS 13
#define CANTIDAD_NUMEROS2 6
#define DESDE 1
#define HASTA 10
typedef struct lista{
int num;
struct lista *sig;
}nodo;
void crear (nodo *pt, int, int);
void crear2 (nodo *pt, int, nodo *pt2);
void mostrar(nodo *pt);
int main()
{
int i=0;
int t=0;
nodo *prin;
nodo *prin2;
prin=(nodo*)malloc(sizeof(nodo));
prin2=(nodo*)malloc(sizeof(nodo));
crear(prin,i, t); //creates first list
mostrar (prin); //shows first list
crear2(prin,i, prin2); //gets 'divisible by 3' numbers
mostrar(prin2); // shows second list
return 0;
}
//creates list
void crear (nodo *registro, int cont, int t)
{
scanf("%d", &t);
registro->num = t;
if (registro->num == 1000)
registro->sig=NULL;
else
{
registro->sig=(nodo*)malloc(sizeof(nodo));
cont++;
crear (registro->sig,cont, t);
}
return;
}
//shows list
void mostrar (nodo *registro)
{
if (registro->sig !=NULL)
{
printf ("%d\n",registro->num);
mostrar (registro->sig);
}else{
printf("%d\n",registro->num);
}
return;
}
//creates second list with only numbers that are divisible by 3
void crear2 (nodo *registro, int cont, nodo *registroNuevo)
{
if ((registro->num % 3) == 0){
registroNuevo->num = registro->num;
registroNuevo->sig = (nodo*)malloc(sizeof(nodo));
}
if(registro->sig != NULL){
crear2(registro->sig,cont, registroNuevo->sig);
}else{
return;
}
}
我希望显示第一个列表(它正在发生)以及显示可被 3 整除的数字的第二个列表,这不会发生。
解决方案
void crear2 (nodo *registro, int cont, nodo *registroNuevo) {
if ((registro->num % 3) == 0) {
registroNuevo->num = registro->num;
registroNuevo->sig = (nodo*)malloc(sizeof(nodo));
if (registro->sig != NULL)
crear2(registro->sig, cont, registroNuevo->sig);
}
else {
if (registro->sig != NULL)
crear2(registro->sig, cont, registroNuevo);
}
}
这是我的方法,但在最后一次 mostrar() 调用中你仍然得到一个最终的意外 0;而且您仍然需要拨打“免费”电话。我认为你应该避免递归调用,有更简单的方法可以做到这一点。萨卢多斯。
推荐阅读
- excel - 我开发的 vba 代码有问题
- wso2 - 使用自定义索赔处理程序的 WSO2 索赔扩展
- php - PHP Excel 禁用单元格..设置受保护
- ios - iOS IAP 用于有限购买数量的商品。消耗还是不消耗?
- eclipse - TestNG 与 eclipse 2019-09 不兼容
- c# - 如何使用 ICsharpCode.TextEditor 组件自动完成标签?
- typescript - 如何将 react javascript 转换为类型脚本?
- c++ - 请解释这个语句(cout << 1 + int((a < b) ^ ((b - a) & 1)) << endl)
- r - 如何用R中的两个指数项拟合曲线
- r - 在图例中为 R 中的 ggplot 格式化日期