openssl stack数据结构

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  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值