Skip to content
Snippets Groups Projects
stackpair.c 1.88 KiB
Newer Older
  • Learn to ignore specific revisions
  • Douglas Guptill's avatar
    Douglas Guptill committed
    #include <stdlib.h>
    
    
    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;
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    void stackpairinit_();
    void stackpairinit();
    
    Douglas Guptill's avatar
    Douglas Guptill committed
            void stackpairinit_() {stackpairinit();}
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    	void stackpairinit () 
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    	   {
    	     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;
    	   }
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    void stackpairflush_();
    void stackpairflush();
    
    Douglas Guptill's avatar
    Douglas Guptill committed
            void stackpairflush_() {stackpairflush();}
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    	void stackpairflush () 
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    	   {
                 free(heada);
                 free(headb);
                 free(za);
                 free(zb);
    	   }
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    void pushpair_();
    void pushpair();
    
    Douglas Guptill's avatar
    Douglas Guptill committed
            void pushpair_(pa, pb)  int *pa; int *pb; {pushpair(pa, pb);}
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    	void pushpair (pa, pb)
    
    Douglas Guptill's avatar
    Douglas Guptill committed
                 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;	
    	   }
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    void poppair_();
    void poppair();
    
    Douglas Guptill's avatar
    Douglas Guptill committed
            void poppair_(xa,xb)  int *xa; int *xb; {poppair(xa,xb);}
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    	void poppair (xa,xb)
    
    Douglas Guptill's avatar
    Douglas Guptill committed
                 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);
    	   }
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    void stackpairempty_();
    void stackpairempty();
    
    
    Douglas Guptill's avatar
    Douglas Guptill committed
            void stackpairempty_(i) int *i; {stackpairempty(i);}
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    	void stackpairempty (i)
    
    Douglas Guptill's avatar
    Douglas Guptill committed
                int *i;
    	  { 
    	    *i = 0;
                if(heada->next == za) *i = 1;
              }