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
 |