de un lado voy a tener una fila de caracteres y del otro una fila de números
el usuario tiene que ingresar cuantos nodos va a tener cada una
y voy a tener un semáforo que solo de 1 y 0, si me sale 1 voy a dejar pasar el primer nodo que se ingreso a la fila de caracteres y si sale 0 voy a dejar pasar un nodo de la fila de los numeros
esos nodos que pasen me van a generar una nueva fila
este es mi programa pero ya me atore en la parte del semáforo, por favor alguien que me ayude
Código
#include <stdio.h> #include <stdlib.h> #include <conio.h> void insertar_filasFC(); void imprimir_filasFC(); void insertar_filasFN(); void imprimir_filasFN(); void insertar_filasF(); void eliminar_Nodo(); void eliminar_Nodo1(); typedef struct nodo { char FC_filas;//donde se guarda la fila de los caracteres char FN_filas;//donde se guarda la fila de los numeros char F_filas;//donde se guarda la fila resultante struct nodo *sig;//puntero siguiente }nodo; nodo *primero1=NULL,*ultimo1=NULL,*primero2=NULL,*ultimo2=NULL,*primero=NULL,*ultimo=NULL,*inicio2=NULL,*inicio=NULL,*inicio1=NULL; int main() { int FC,FN,i,n,k; char letra='A',j='1'; if(FC<27||FN<10){ for(i=1; i<=FC; i++){ //printf("%c ",letra); insertar_filasFC(letra); letra++; } imprimir_filasFC(); for(i=1; i<=FN; i++){ insertar_filasFN(j); j++; //printf("%d ",j); } imprimir_filasFN(); insertar_filasFC(*ultimo1); insertar_filasFN(*ultimo1); do{ if (semaforo==1){ insertar_filasFC(*primero); insertar_filasF(primero); eliminar_Nodo(primero); }else{ if (semaforo==0){ insertar_filasFN(*primero1); insertar_filasF(primero1); eliminar_Nodo1(primero1); } } while(ultimo==NULL || ultimo1==NULL){ } }while(ultimo!=NULL && ultimo1!=NULL); }else{ return main(); } //printf("%d",semaforo); return 0; } void insertar_filasF(char *dato){ primero2-> F_filas=dato; primero2->sig=NULL; if(ultimo2==NULL) ultimo2=inicio2=primero2; else{ ultimo2->sig=primero2; ultimo2=primero2; } } void insertar_filasFC(char *letras){ primero-> FC_filas=letras; primero->sig=NULL; if(ultimo==NULL) ultimo=inicio=primero; else{ ultimo->sig=primero; ultimo=primero; } } void imprimir_filasFC(){ primero=inicio; while(primero!=NULL){ primero=primero->sig; } } void insertar_filasFN(char *i){ primero1->FN_filas=i; primero1->sig=NULL; if(ultimo1==NULL) ultimo1=inicio1=primero1; else{ ultimo1->sig=primero1; ultimo1=primero1; } } void imprimir_filasFN(){ primero1=inicio1; while(primero1!=NULL){ primero1=primero1->sig; } } void eliminar_Nodo(char dato){ inicio=primero; if(primero==NULL){ primero=inicio->sig; } return primero; } void eliminar_Nodo1(char dato){ inicio1=primero1; if(primero1==NULL){ primero1=inicio1->sig; } return primero; }