Aprendiz

Barra de Salud : 
Mensajes : 24
Reputación : 5 Monedas de oro : 314 Monedas de Platino : 0 
Inventario :  
 | (#) Tema: Dudas con estructura de datos Miér Ene 29, 2014 8:40 pm | |
| Hola , trataba de implementar algo y me he quedado trabado, necesito implementar un struct o guardar de alguna otra forma 6 numeros enteros en un array dentro de un struct que extiende a un array, pero el problema está en que no doy con el algoritmo necesario para manejar la forma en que se agregan los elementos es decir tengo 6 elementos que guardar pero cada uno ocuparia un slot sin embargo no puedo definir el orden en que se guardan los elementos y luego asignar otro elemento a esta lista Ejemplo: - Código:
-
//digamos que estas son las posiciones guardadas de forma aleatoria en el array
6=[1] 0=[2] 1=[3] 3=[4] 0=[5] 2=[6]
teniendo este caso necesito un algoritmo o alguna forma para que al asignar un nuevo elemento a la lista encuentre con el menor numero de iteraciones posibles una posicion que contenga 0 (partiendo de que las posiciones 1 , 3 , 4 ,6 estan ocupadas)
lo de arriba es la forma que realmente tiene el array , pero digamos que por oscuras razones no puedo iterar todo el array por lo tanto solo puedo recuperar las posiciones que estan ocupadas quedando mi array de salida algo asi: - Código:
-
2=[1] 3=[2] 1=[3] 6=[4] // aqui es donde necesito de alguna manera conocer las possiciones que no están ocupadas para agregar una nueva posicion al array los numeros entre []representan los indices del array y los otros los valores almacenados , necesito encotnrar dentro de los valores almacenados el menor numero que esté disponible para asignar el array
PD : perdon por no haber sido lo suficientemente especifico desde el principio 
Última edición por io el Jue Ene 30, 2014 12:25 am, editado 3 veces (Razón : información incompleta) |
|
Capitán

Barra de Salud : 
Mensajes : 129
Reputación : 28 Monedas de oro : 830 Monedas de Platino : 0 
Inventario :  
 | (#) Tema: Re: Dudas con estructura de datos Miér Ene 29, 2014 9:17 pm | |
| No se si te servirá, el siguiente código lo uso siempre para generar IDs. Llamas a ObtenerID() y retorna un entero que podes usar como posición de un array o tabla hash para guardar tu integer allí. Si eventualmente una posición de tu array se vuelve 0, llamas a DestruirID(Posición que acabas de vaciar) y queda liberado para que cuando pidas otro ID te pueda devolver esa posición. - Código:
-
[jass] globals private constant integer OBJETOIDPOS = -1 private integer IDS = 0 private integer array IDLIST private hashtable ID_hash = InitHashtable() endglobals
function ObtenerID takes nothing returns integer local integer id = 0 set IDS = IDS + 1 set id = IDLIST[IDS] if id == 0 then set IDLIST[IDS] = IDS set id = IDS endif call SaveInteger(ID_hash, OBJETOIDPOS, id, IDS) return id endfunction
function DestruirID takes integer id returns nothing local integer idpos = 0 if id > 0 and HaveSavedInteger(ID_hash, OBJETOIDPOS, id) then set idpos = LoadInteger(ID_hash, OBJETOIDPOS, id) set IDLIST[idpos] = IDLIST[IDS] call SaveInteger(ID_hash, OBJETOIDPOS, IDLIST[IDS], idpos) set IDLIST[IDS] = id call RemoveSavedInteger(ID_hash, OBJETOIDPOS, id) set IDS = IDS - 1 endif endfunction [/jass]  and it makes me wonder... |
|


Barra de Salud : 
Mensajes : 299
Reputación : 64 Monedas de oro : 1681 Monedas de Platino : 0 
Inventario :  
 | (#) Tema: Re: Dudas con estructura de datos Miér Ene 29, 2014 11:52 pm | |
| - WonderWoman escribió:
- ...
 Se... o podes usar lo siguiente: - Código:
-
[jass]struct s static method create takes nothing returns thistype local thistype this = thistype.allocate() if ( this > 6 ) then call this.dellocate() return 0 endif return this endmethod endstruct[/jass] |
|
 | (#) Tema: Re: Dudas con estructura de datos  | |
| |
|