stack
内部实现是一个指针数组
struct stack_st {
int num; //实际的数据大小
const void **data; //分配的指针数组
int sorted; //是否排序,查找时如果没有排序,先进行快速排序,然后二分法查找
int num_alloc;//容量
OPENSSL_sk_compfunc comp; //比较函数,排序时使用
};
#include <openssl/stack.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void myfree(void * data){
//对指针数组保存的数据进行释放
}
int main()
{
OPENSSL_STACK *st = OPENSSL_sk_new_null();
char *s = "abc";
char *x = "xxx";
OPENSSL_sk_push(st, s);
OPENSSL_sk_push(st, x);
int index = OPENSSL_sk_find(st, x); //内部是个指针数组,没有找到返回-1
printf("%d\n", index);
int num = OPENSSL_sk_num(st);
printf("num %d\n", num);
char *y=(char*)OPENSSL_sk_pop(st); //弹出保存进去的指针
printf("%s\n",y);
OPENSSL_sk_shift(st);//删除第一个元素
OPENSSL_sk_unshift(st,"asdd");//插入元素到第一个位置
OPENSSL_sk_free(st);//释放st和st内部的指针数组
// OPENSSL_sk_pop_free(st,myfree);//对指针数组保存的指针进行释放,然后调用OPENSSL_sk_free
}