PDA

Visualizza la versione completa : [C] uso di liste


annam90
01-06-2010, 16:56
ciao a tutti...devo utilizzare per un programma delle liste (multiple) come strutture dati..dato che nelle liste ci si muove tramite i puntatori alla lista successiva come faccio ad accedere ad un determinato elemento sapendo solamente in che posizione ?

oregon
01-06-2010, 17:35
Originariamente inviato da annam90
ciao a tutti...devo utilizzare per un programma delle liste (multiple) come strutture dati..dato che nelle liste ci si muove tramite i puntatori alla lista successiva come faccio ad accedere ad un determinato elemento sapendo solamente in che posizione ?

Non alla lista successiva, ma al nodo successivo.

In che senso dici che "sai in che posizione "?

annam90
01-06-2010, 17:45
conosco la posizione in quanto ho una matrice costruita sulla lista multipla..e quindi ho gli indici di righe e colonne di questa matrice..
dato che tra le varie funzioni da implementare ne ho una in cui devo leggere un elemento della matrice conoscendone la posizione, mi chiedevo come poter accedere a quel determinato elemento

oregon
01-06-2010, 18:05
Originariamente inviato da annam90
... ho una matrice costruita sulla lista multipla..e quindi ho gli indici di righe e colonne di questa matrice..

A saperlo ... :madai!?:



dato che tra le varie funzioni da implementare ne ho una in cui devo leggere un elemento della matrice conoscendone la posizione, mi chiedevo come poter accedere a quel determinato elemento

Della matrice o della lista?

Dalla posizione nella matrice non puoi arrivare immediatamente all'elemento della lista se non scorrendola ...

annam90
01-06-2010, 18:19
scorrendo la lista? come?

oregon
01-06-2010, 18:27
Per capirci, praticamente, che tipo di dati hai memorizzato ?

annam90
01-06-2010, 18:32
allora nel mio programma questo il main:


#include <stdio.h>
#include <stdlib.h>
#include "funzioni.h"

int main()
{
matrice matrice1;
int i,righe,colonne;

matrice1.prox=&matrice1;
matrice1.colonne.prox=&matrice1.colonne;

scanf("%d",&righe);
scanf("%d",&colonne);
creamatrice(&matrice1,righe,colonne);

for(i=0;i<4;i++){
printf("%f ",matrice1.colonne.element);
matrice1.colonne=*matrice1.colonne.prox;}

system("PAUSE");
return 0;
}

questo il file .c con la funzione:


#include <stdio.h>
#include <stdlib.h>
#include "funzioni.h"

void creamatrice(matrice* matrice1, int righe, int colonne)
{
int count,i;

count=0;
while(count<colonne){

for(i=0;i<2;i++){
matrice1->colonne.element=5;
if(i!=righe-1)
matrice1->colonne = *matrice1->colonne.prox;
else
matrice1->colonne.prox=NULL; }

for(i=2;i<4;i++){
matrice1->colonne.element=2;
if(i!=righe-1)
matrice1->colonne = *matrice1->colonne.prox;
else
matrice1->colonne.prox=NULL; }
matrice1=matrice1->prox; count++; }
}

file .h

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

typedef struct A { float element; struct A * prox; } RIGHE;
typedef struct B { RIGHE colonne; struct B * prox; } matrice;

extern void creamatrice(matrice* matrice1, int righe, int colonne);
extern void stampamatrice(matrice *);
extern void scrivielemento(matrice *, float, int, int);
extern float leggielemento(matrice *, int, int);
extern int numerorighe(matrice *);
extern int numerocolonne(matrice *);



ora cm ora il puntatore punta sempre alla stessa struttura mentre io voglio che punti
sempre ad una nuova struttura qnd chiamato...come fare?

annam90
01-06-2010, 20:17
qualcuno sa come fare?

Loading