Difference between revisions of "Cliente de Lista Duplamente Ligada"

From Wiki**3

 
(Resultado de Execução)
Line 34: Line 34:
 
== Resultado de Execução ==
 
== Resultado de 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»
 
|}
 

Revision as of 16:47, 27 May 2005

Este programa exemplifica um cliente de lista duplamente ligada.

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;
 }

Resultado de 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»