PDA

Visualizza la versione completa : Lista di array in C


streuso83
19-06-2008, 01:29
ciao a tutti, vi espongi il mio problema...devo creare una lista in cui gli elementi sono stringhe di caratteri...qualcuno puo aiutarmi?io avrei pensato a questa soluzione...

#include <stdio.h>
#define DIM 20

typedef struct Nodo {

char name[DIM];
struct Nodo *next;

} FilePointerNode;

Non so se corretta....
potreste suggerirmi la funzione per la scansione e l'inserimento degli elementi di tipo stringa?
grazie

oregon
19-06-2008, 07:42
Originariamente inviato da streuso83
Non so se corretta....


S ... corretta ...


potreste suggerirmi la funzione per la scansione

"Scansione" ... in che senso?


l'inserimento degli elementi di tipo stringa?


Una volta allocata una struttura, accedi al suo elemento come per qualsiasi stringa.
Se staticamente, con

stru.name

se con un puntatore, con

stru->name

mondobimbi
19-06-2008, 09:36
s, va bene ma utilizzerei PATH_MAX che definito in limits.h e che rappresenta la massima dimensione di un nome file per il sistema che utilizzi


#include <stdio.h>
#include <limits.h>

typedef struct Nodo {

char name[PATH_MAX];
struct Nodo *next;

} FilePointerNode;

int main()
{

return (0);

}

streuso83
19-06-2008, 11:24
Ciao a tutti....ho buttato giu questo...

#include <stdio.h>
#include <malloc.h>
#include <limits.h>
#include <string.h>

typedef struct Nodo {

char name[PATH_MAX];
struct Nodo *next;

} FilePointerNode;

FilePointerNode* root = NULL;

FilePointerNode* makeNewNode( char filename ) {

FilePointerNode* node = (FilePointerNode *) malloc ( sizeof ( FilePointerNode ) );
node->name[PATH_MAX] = filename;
node->next = NULL;

return node;

};

FilePointerNode* addNode (FilePointerNode *root, char filename ) {

if ( !root )
return makeNewNode( 'filename' );
else {

FilePointerNode* node = root ;
while ( node->next ) node = node->next ;
return node->next = makeNewNode( 'filename' );

}

};


void inserimento (char filename)
{
if (root==NULL) addNode ( NULL,'filename');
else addNode ( root, 'filename' );

};



Io vorrei che il mio programma leggesse una stringa di volta in volta e la assegnasse ad ogni elemento della lista.Infine stamparla a video. Cosa c' che nn va nelle funzioni?sicuramente quelche puntatore...

mondobimbi
19-06-2008, 11:36
ci sono un po' di errori



#include <stdio.h>
#include <malloc.h>
#include <limits.h>
#include <string.h>

typedef struct Nodo {

char name[PATH_MAX];
struct Nodo *next;

} FilePointerNode;

FilePointerNode* root = NULL;

FilePointerNode* makeNewNode(const char *filename ) {

FilePointerNode* node = (FilePointerNode *) malloc ( sizeof ( FilePointerNode ) );
strcpy (node->name, filename);
node->next = NULL;

return node;

};

FilePointerNode* addNode (FilePointerNode *root, const char * filename ) {

if ( !root )
return makeNewNode( filename );
else {

FilePointerNode* node = root ;
while ( node->next ) node = node->next ;
return node->next = makeNewNode( filename );

}

};

int main ()
{
return (0);
}

stefanoscaduto
19-06-2008, 12:03
Ciao mondobimbi...una cosa...ma come faccio a inserire e poi stampare il contenuto della lista di array che tu haii creato sopra?????

mondobimbi
19-06-2008, 12:15
leggiamo dallo stdin e stampiamo la lista.




int main ()
{

char path [PATH_MAX];
FilePointerNode* root = NULL;
while ( scanf ("%s", path) > 0 ) {
if ( root )
addNode (root, path );
else
root = addNode (root, path );
}

FilePointerNode* node = root;
while ( node ) {
printf ( "%s\n", node->name );
node = node->next;
}

}

Loading