第三章 堆栈 / 3.2 数据结构

openssl堆栈数据结构在stack.h中定义如下:

typedef struct stack_st

{

       int num;

       char **data;

       int sorted;

       int num_alloc;

       int (*comp)(const char * const *, const char * const *);

} STACK;

各项意义如下:

num:       堆栈中存放数据的个数。

data:        用于存放数据地址,每个数据地址存放在data[0]data[num-1]中。

sorted:     堆栈是否已排序,如果排序则值为1,否则为0,堆栈数据一般是无序的,只有当用户调用了sk_sort操作,其值才为1

comp:     堆栈内存放数据的比较函数地址,此函数用于排序和查找操作;当用户生成一个新堆栈时,可以指定comp为用户实现的一个比较函数;或当堆栈已经存在时通过调用sk_set_cmp_func函数来重新指定比较函数。

注意,用户不需要调用底层的堆栈函数(sk_sortsk_set_cmp_func),而是调用他通过宏实现的各个函数。