/*
* list.h
*
* Created on: Nov 1, 2010
* Author: jenson
*/
#ifndef LIST_H_
#define LIST_H_
typedef int elem_type;
typedef struct _node_ * node;
typedef struct _dr_list_ *dr_list;
struct _dr_list_{
dr_list pre;
dr_list next;
elem_type data;
};
extern dr_list drl_create();
extern int drl_init(dr_list list);
extern int drl_destroy(dr_list list);
extern int drl_clear(dr_list list);
extern int drl_empty(dr_list list);
extern int drl_length(dr_list list);
extern void drl_display(dr_list list);
extern int drl_get(dr_list list,int pos,elem_type * val);
extern dr_list drl_get_header(dr_list list);
extern dr_list drl_get_tail(dr_list list);
extern int drl_local(dr_list list,elem_type e);
extern int drl_insert_head(dr_list list,elem_type e);
extern int drl_insert_tail(dr_list list,elem_type e);
extern int drl_insert(dr_list list,int pos,elem_type e);
extern int drl_delete(dr_list list,int pos,elem_type* e);
extern dr_list drl_next_elem(dr_list list,elem_type val);
extern dr_list drl_pre_elem(dr_list list,elem_type val);
#endif /* LIST_H_ */