From: Alex B. <ne...@za...> - 2000-10-26 03:11:30
|
é uma boa ideia usar lista encadeada... melhor ainda se for circular.. Os algoritmos ficam mais faceis.. To tendo uma máteria que se chama: Estrutura de Dados.... advinha o que se aprende nela ??? Se precisar de algum auxilio com algoritmos, estou craque.... vc poderia usar arvores binárias tb, mas fica um pouco mais complicado, apesar de elegante e eficiente... té mais... André Casteliano wrote: > > Olá pessoal (e principalmente os coders :)), > > se leram meu e-mail anterior, devem estar cientes do fato de que eu > estou querendo usar listas encadeadas no acesso ao arquivo de > configuração. > > Bom, vou explicar a idéia que eu tive, aí vocês avaliam se eu fiquei > doido, se eu perdi o juízo momentaneamente ou se já é caso de hospício > mesmo. :PPP > > Teremos a seguinte estrutura: > > struct isp { > char *isp; /* nome do provedor */ > char *username; /* nome de usuario (login) */ > char *string; /* é necessário isso ??? */ > char *fones; /* números de acesso */ > char *dns1; /* dns primario */ > char *dns2; /* dns secundario */ > int rediscar; /* numero de tentativas de rediscagem */ > int debug /* é necessário isso ??? */ > > char *next; /* proxima estrutura do tipo isp */ > }; > > Bom, aí podemos fazer um typedef prá simplificar e criar o novo tipo de > dado: > > #typedef struct isp provedor > > Aí, abrimos o arquivo de configuração, pegamos os dados e jogamos na > struct (prá cada provedor): > > provedor *prov > > strcpy(prov->isp, "nome_do_provedor"); /* onde 'nome_do_provedor' seria > pego do arquivo */ > > e assim por diante, até termos todo o arquivo de configuração armazenado > na lista encadeada (inclusive a seção GLOBAL). > > Se o usuário alterar alguma coisa, basta fazermos: > > prov->dado = novo_valor ; > > resumindo, na memória é bem simples de modificar os dados... aí depois, > na hora de gravar o arquivo, abrimos ele prá gravação, desprezando o seu > conteúdo: > > arquivo = fopen("arquivo", "w+"); > > e gravamos sequencialmente (através de um loop) toda a informação > contida na lista (nos diversos nós) no arquivo. > > while (!primeira_estrutura->next) > { > write(........); > } > > E aí, o que vcs acham ??? Eu pirei de vez ??? Não pirei ??? Dêem sua > opinião porque no nosso projeto, TODOS decidem! :-)))) > > []'s > > -- > André Casteliano > Analista de Sistemas > > +-=-=[ dig...@us...]=-=-+ > [ Linux User: # 178853 Machine: # 79923 ] > [ Linux Heavy User - Powered by Slackware 7.1 ] > [ http://www.geocities.com/andre_casteliano/ ] > +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+ > [ LinuxCall - The Linux Dialer ] > [ http://linuxcall.sourceforge.net ] > +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+ > > _______________________________________________ > Linuxcall-list mailing list > Lin...@li... > http://lists.sourceforge.net/mailman/listinfo/linuxcall-list > Canal IRC: irc.wnet.com.br #linuxcall > HomePage: http://linuxcall.sourceforge.net ... ;-) té mais... André Casteliano wrote: > > Olá pessoal (e principalmente os coders :)), > > se leram meu e-mail anterior, devem estar cientes do fato de que eu > estou querendo usar listas encadeadas no acesso ao arquivo de > configuração. > > Bom, vou explicar a idéia que eu tive, aí vocês avaliam se eu fiquei > doido, se eu perdi o juízo momentaneamente ou se já é caso de hospício > mesmo. :PPP > > Teremos a seguinte estrutura: > > struct isp { > char *isp; /* nome do provedor */ > char *username; /* nome de usuario (login) */ > char *string; /* é necessário isso ??? */ > char *fones; /* números de acesso */ > char *dns1; /* dns primario */ > char *dns2; /* dns secundario */ > int rediscar; /* numero de tentativas de rediscagem */ > int debug /* é necessário isso ??? */ > > char *next; /* proxima estrutura do tipo isp */ > }; > > Bom, aí podemos fazer um typedef prá simplificar e criar o novo tipo de > dado: > > #typedef struct isp provedor > > Aí, abrimos o arquivo de configuração, pegamos os dados e jogamos na > struct (prá cada provedor): > > provedor *prov > > strcpy(prov->isp, "nome_do_provedor"); /* onde 'nome_do_provedor' seria > pego do arquivo */ > > e assim por diante, até termos todo o arquivo de configuração armazenado > na lista encadeada (inclusive a seção GLOBAL). > > Se o usuário alterar alguma coisa, basta fazermos: > > prov->dado = novo_valor ; > > resumindo, na memória é bem simples de modificar os dados... aí depois, > na hora de gravar o arquivo, abrimos ele prá gravação, desprezando o seu > conteúdo: > > arquivo = fopen("arquivo", "w+"); > > e gravamos sequencialmente (através de um loop) toda a informação > contida na lista (nos diversos nós) no arquivo. > > while (!primeira_estrutura->next) > { > write(........); > } > > E aí, o que vcs acham ??? Eu pirei de vez ??? Não pirei ??? Dêem sua > opinião porque no nosso projeto, TODOS decidem! :-)))) > > []'s > > -- > André Casteliano > Analista de Sistemas > > +-=-=[ dig...@us...]=-=-+ > [ Linux User: # 178853 Machine: # 79923 ] > [ Linux Heavy User - Powered by Slackware 7.1 ] > [ http://www.geocities.com/andre_casteliano/ ] > +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+ > [ LinuxCall - The Linux Dialer ] > [ http://linuxcall.sourceforge.net ] > +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+ > > _______________________________________________ > Linuxcall-list mailing list > Lin...@li... > http://lists.sourceforge.net/mailman/listinfo/linuxcall-list > Canal IRC: irc.wnet.com.br #linuxcall > HomePage: http://linuxcall.sourceforge.net -- /------------------------------ \ ____ | Alex Borro - Neo-Linux_Inside | \ \ | Faculdade de Engenharia | |\ >>\ \> | Mecatrônica - UNICAMP |----| \_____\ \_______ >-------------------------------< | L I N U X \ | Powered By LINUX SLACKWARE 7.1|----|________ _______/ | Kernel 2.2.16 User: 164956 | / / | e-mail: ne...@ya... | >>/ /> \-------------------------------/ /___/ The box said "Requeries Windows 9x, Windows NT 4, or better", so I installed Linux. |