Skip to content
Snippets Groups Projects
stackpair.c 1.39 KiB
Newer Older
  • Learn to ignore specific revisions
  • Douglas Guptill's avatar
    Douglas Guptill committed
    	static struct node
    	{ int key; struct node *next; };
    	static struct node *heada, *za, *ta;
    	static struct node *headb, *zb, *tb;
    	stackpairinit() 
    	   {
    	     heada = (struct node *) malloc(sizeof *heada);
    	     za = (struct node *) malloc(sizeof *za);
    	     heada->next = za; heada->key=0;
    	     za->next = za;
    	     za->key = 0;
    
    	     headb = (struct node *) malloc(sizeof *headb);
    	     zb = (struct node *) malloc(sizeof *zb);
    	     headb->next = zb; headb->key=0;
    	     zb->next = zb;
    	     zb->key = 0;
    	   }
    	stackpairflush() 
    	   {
                 free(heada);
                 free(headb);
                 free(za);
                 free(zb);
    	   }
    	pushpair(pa, pb)
                 int *pa;
                 int *pb;
    	   {
    	     int va;
    	     int vb;
    	     va = *pa;
    	     ta = (struct node *) malloc(sizeof *ta);	
    	     ta->key = va; ta->next = heada->next;	
    	     heada->next =ta;	
    
    	     vb = *pb;
    	     tb = (struct node *) malloc(sizeof *tb);	
    	     tb->key = vb; tb->next = headb->next;	
    	     headb->next =tb;	
    	   }
    	poppair(xa,xb)
                 int *xa;
                 int *xb;
    	   {
    	     ta = heada->next; heada->next = ta->next;
    	     *xa = ta->key;
    	     free(ta);
    	     tb = headb->next; headb->next = tb->next;
    	     *xb = tb->key;
    	     free(tb);
    	   }
    	stackpairempty(i)
                int *i;
    	  { 
    	    *i = 0;
                if(heada->next == za) *i = 1;
              }