C语言实现双向链表之ADT定义

/*
 * 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_ */

你可能感兴趣的:(算法,职场,休闲)