37 lines
		
	
	
		
			827 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			827 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
| Copyright (C) 2015-2019 The University of Notre Dame
 | |
| This software is distributed under the GNU General Public License.
 | |
| See the file LICENSE for details.
 | |
| */
 | |
| 
 | |
| #ifndef LIST_H
 | |
| #define LIST_H
 | |
| 
 | |
| struct list;
 | |
| struct list_node;
 | |
| 
 | |
| struct list {
 | |
| 	struct list_node *head;
 | |
| 	struct list_node *tail;
 | |
| 	int size;
 | |
| };
 | |
| 
 | |
| struct list_node {
 | |
| 	struct list_node *next;
 | |
| 	struct list_node *prev;
 | |
| 	struct list *list;
 | |
| 	int priority;
 | |
| };
 | |
| 
 | |
| #define LIST_INIT {0,0}
 | |
| 
 | |
| void list_push_head(struct list *list, struct list_node *node);
 | |
| void list_push_tail(struct list *list, struct list_node *node);
 | |
| void list_push_priority(struct list *list, struct list_node *node, int pri);
 | |
| struct list_node *list_pop_head(struct list *list);
 | |
| struct list_node *list_pop_tail(struct list *list);
 | |
| void list_remove(struct list_node *n);
 | |
| int  list_size(struct list *list);
 | |
| 
 | |
| #endif
 |