我在c中练习链表,我想用rand在节点中存储字符,但是最后一个字母在列表中重复,有人能看到会发生什么吗?
使用此函数填充节点:
bx ic run -m 512 --name container1--volume ibmodmdcvol:/opt/ibmsoftware registry.eu-gb.bluemix.net/bluemix_images/ibmodmdc:v1 v1 bash -c "tail -f /dev/null"
这是函数agregarNodo:
nodo* nodoListas(nodo*Lista){
int i;
char *elemento, caracter;
srand (time(NULL));
for (i = 0; i< CANT_NODOS; i++){
caracter = /*(char*)*/(65 +rand()% 25);
elemento = &caracter;
Lista = agregarNodo (Lista, elemento);
}
}
这是我正在做的代码:
nodo* agregarNodo (nodo* Lista, char* elemento){
nodo* nuevoNodo, *aux;
nuevoNodo = (nodo*) malloc (sizeof(nodo));
nuevoNodo -> elemento = elemento;
nuevoNodo -> siguiente = NULL;
if(Lista == NULL){
Lista = nuevoNodo;
}
else{
aux = Lista; //para no perder el elemento
while(aux->siguiente != NULL){
aux = aux -> siguiente;
}
aux-> siguiente = nuevoNodo;
}
return Lista;
}
答案 0 :(得分:1)
当你这样做时:
caracter = /*(char*)*/(65 +rand()% 25);
elemento = &caracter;
您正在将新的随机值写入声明为caracter的内存空间中,然后将指针(elemento)放入此内存空间。 但是你总是在所有的for循环中使用相同的内存空间。 所以你总是在同一个地方写作并指向同一个地方,只是更新它的值,因此重复最后一个字符值。
答案 1 :(得分:0)
你总是在代码中指向相同的内存
=CustomConcatenate(C1:W2)
你可以使用
caracter = /*(char*)*/(65 +rand()% 25);
elemento = &caracter;
顺便说一句你应该在这里使用数组