gpt4 book ai didi

c - 如何在列表中的每个节点之前插入数字(C)?

转载 作者:行者123 更新时间:2023-11-30 16:16:04 25 4
gpt4 key购买 nike

基本上,我在一个列表中,我必须在每个节点之前插入数字 999(仅当节点为偶数时)。

我可以用第一个来做到这一点。我也可以在后面插入数字。但我不知道如何在节点之前插入数字。

我可能必须修改函数 void insertar2,因为目前它正在节点之后插入新数字(而不是我期望的之前)。

#include <stdio.h>
#include <stdlib.h>
#include<time.h>

#define CANTIDAD_NUMEROS 10
#define DESDE 1
#define HASTA 10

typedef struct lista{
int num;
struct lista *sig;
}nodo;


void crear (nodo *pt, int);
void mostrar(nodo *pt);
nodo* insertar1(nodo* );
nodo* eliminar1(nodo* );
void insertar2 (nodo* );
void eliminar2(nodo* );


int main()
{
int i=0;
nodo *prin;

srand(time(NULL)); //Inicio la semilla para generar numeros aleatorios - una sola vez en el main

prin=(nodo*)malloc(sizeof(nodo));
crear(prin,i);
//mostrar (prin);
prin = insertar1(prin);
insertar2(prin);
mostrar (prin);



return 0;
}

void crear (nodo *registro,int cont)
{

registro->num = rand () % (HASTA-DESDE+1) + DESDE;

if (cont==CANTIDAD_NUMEROS) //si cambia se convierte en 1
registro->sig=NULL;
else
{

registro->sig=(nodo*)malloc(sizeof(nodo));
cont++;
crear (registro->sig,cont);

}
return;
}

void mostrar (nodo *registro)
{
if (registro->sig !=NULL)
{
printf ("%d\n",registro->num);
mostrar (registro->sig);
}
return;
}


//modelos a utilizar... modificarlos segun el ejercicio.
nodo* insertar1(nodo *p)
{
nodo *aux;
if(p->num%2==0)
{
aux=(nodo *)malloc(sizeof(nodo));
aux->num=999;//valor a insertar
aux->sig=p;
p=aux;
}
return p;
}

void insertar2 (nodo *p)
{nodo *aux;
while(p->sig!=NULL)
{
if(p->num%2==0) //condicion de insercion
{
aux=(nodo *)malloc(sizeof(nodo));
aux->num=999;//valor a insertar
aux->sig=p->sig;
p->sig=aux;

}
p=p->sig;
}
}

如果函数/变量的西类牙语名称令人困惑,我们深表歉意。

最佳答案

建议更改;

nodo* insertar1(nodo *p)
{
nodo *aux;
if(p->num%2==0)
{
aux = malloc(sizeof(nodo));
aux->num = 999;//valor a insertar
aux->sig = p;
p=aux;
}
return p;
}

p指向的条目之前插入一个新节点。

nodo* insertar1(nodo *p)
{
nodo *aux = malloc(sizeof(nodo));
aux->sig = p;
aux->num = p->num+1;

if(p->num%2==0)
{
p->num = 999;
}

return aux;
}

仍然需要对malloc()返回的值进行错误检查

关于c - 如何在列表中的每个节点之前插入数字(C)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56826914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com