Cliente de Lista Duplamente Ligada: Difference between revisions

From Wiki**3

No edit summary
 
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
Este programa exemplifica um cliente de [[Listas Duplamente Ligadas (genérica)|lista duplamente ligada]].
Este programa exemplifica um cliente de [[Listas Duplamente Ligadas (genérica)|lista duplamente ligada genérica]].


== Ficheiro main.c ==
== Ficheiro main.c ==
Line 32: Line 32:
   }
   }


== Resultado de Execução ==
== Resultados da Execução ==


{| align='center' cellpadding='3' cellspacing='3' bgcolor='red'
  FORWARD  I   BACKWARD I FORWARD  S   BACKWARD S
| FORWARD  I  
  INT «3»     INT «2»     STR «CCC»   STR «EEE»
| BACKWARD I  
  INT «0»     INT «1»     STR «BBB»   STR «DDD»
| FORWARD  S  
  INT «1»     INT «0»     STR «AAA»   STR «AAA»
| BACKWARD S
  INT «2»     INT «3»     STR «DDD»   STR «BBB»
|-
                          STR «EEE»   STR «CCC»
| INT «3»  
| INT «2»  
| STR «CCC»
| STR «EEE»
|-
| INT «0»  
| INT «1»  
| STR «BBB»
| STR «DDD»
|-
| INT «1»  
| INT «0»  
| STR «AAA»
| STR «AAA»
|-
| INT «2»  
| INT «3»  
| STR «DDD»
| STR «BBB»
|-
|       
|       
| STR «EEE»
| STR «CCC»
|}

Latest revision as of 14:56, 27 May 2005

Este programa exemplifica um cliente de lista duplamente ligada genérica.

Ficheiro main.c

 #include <stdio.h>
 #include “lista.h”

Estas funções irão ser utilizadas pelos iteradores da lista para visitar cada elemento. A acção correspondente é a impressão do valor associado a cada nó.

 void print_int(void *i) { printf("INT «%d»\n", *(int*)i); }
 void print_str(void *s) { printf("STR «%s»\n", (char*)s); }

Função principal: cria duas lista a preenche-as.

 int main() {
   char r[] = "AAA", s[] = "BBB", t[] = "CCC", u[] = "DDD", v[] = "EEE";
   int i = 0, j = 1, k = 2, l = 3;

   dllist intlist, strlist, *I = &intlist, *S = &strlist;
   init(I); init(S);

   push_front(S,r);  push_front(S,s);  push_front(S,t);
   push_back (S,u);  push_back (S,v);
   push_front(I,&i); push_back (I,&j); push_back (I,&k); push_front(I,&l);
 
   printf("FORWARD  I\n"); print_forward (I, print_int);
   printf("BACKWARD I\n"); print_backward(I, print_int);
   printf("FORWARD  S\n"); print_forward (S, print_str);
   printf("BACKWARD S\n"); print_backward(S, print_str);
 
   return 0;
 }

Resultados da Execução

 FORWARD  I   BACKWARD I  FORWARD  S   BACKWARD S
 INT «3»      INT «2»     STR «CCC»    STR «EEE»
 INT «0»      INT «1»     STR «BBB»    STR «DDD»
 INT «1»      INT «0»     STR «AAA»    STR «AAA»
 INT «2»      INT «3»     STR «DDD»    STR «BBB»
                          STR «EEE»    STR «CCC»