[C] Dúvida sobre esta função de criar uma lista encadeada em C

Iniciado por solanoalves, 28 de Fevereiro de 2007, 23:12

tópico anterior - próximo tópico

solanoalves

Função:

Citar
void cria_lista(struct funcionarios *i, struct funcionarios **inicio, struct funcionarios **fim)
{
   struct funcionarios *old, *p;
   if(*fim==NULL) {  //primeiro elemento da lista
      i->prox = NULL;
      i->ante = NULL;
      *fim = i;
      *inicio = i;
      return;
   }
   p = *inicio;   //começando no topo da lista...
   old = NULL;
   while(p) {
      if((p->matricula, i->matricula)<0) { //<--- minha duvida esta aqui
         old = p;
         p = p->prox;
      }
      else {
         if(p->ante) {
            p->ante->prox =i;
            i->prox = p;
            i->ante = p->ante;
            p->ante = i;
            return;
         }
         i->prox = p;  //novo primeiro elemento
         i->ante = NULL;
         p->ante = i;
         *inicio = i;
         return;
      }
   }
   old->prox = i;   //coloca no final
    i->prox = NULL;
   i->ante = old;
   *fim = i;   
}

Dúvidas:

Citarif((p->matricula, i->matricula)<0) {
O que significa esse parentese com uma virgula  ??? do tipo if( (a,b)<0 ) NUNCA vi isso hahahaha... oque significa esse (a,b) ?? e como é possivel (a,b) se transformar em um número único sem ser uma coordenada? ??? ???

Fiz esse programa pra tentar entender, mas não consegui entender pq ele só mostra o valor de y em (x,y)

Citar
#include <stdio.h>

int main()
{
int a=2,b=2,c=1,d=3;

printf("a=2\nb=2\nc=1\nd=3");
printf("\n(a,b) = %d",(a,b));
printf("\n(a,c) = %d",(a,c));
printf("\n(a,d) = %d",(a,d));
printf("\n(c,d) = %d",(c,d));
printf("\n(c,a) = %d",(c,a));
printf("\n(d,a) = %d",(d,a));
printf("\n");

}



Saida do programa :


a=2
b=2
c=1
d=3
(a,b) = 2
(a,c) = 1
(a,d) = 3
(c,d) = 3
(c,a) = 2
(d,a) = 2



Bom sanando essa dúvida vou conseguir entender bem legal o programa  ;D

Valeu galera!!