栈、队列、vector、list的设计

现在很多时候我们喜欢用一些别人开发的开源库,比如opencv之类,我们已经把相对底层的一些东西忽略了,当需要的时候,我们发现其实自己也是可以来设计的。下面给出栈的设计实例,其他的以后再发吧。

 

typedef struct tagStackSeq{
 int top;
 int* elements;//if for other use,int* can be any other data struct.
 int max;
}StackSeq;

void init_stack_seq(StackSeq* seq,int n);
void free_stack_seq(StackSeq* seq);
void push(StackSeq* seq,int d);
int pop(StackSeq* seq);
bool isEmpty(StackSeq* seq);

 

void init_stack_seq(StackSeq* seq,int n)
{
 seq->elements = (int*)malloc(sizeof(int)*n);
 seq->max = n;
 seq->top = -1;
}
void free_stack_seq(StackSeq* seq)
{
 free(seq->elements);
}
void push(StackSeq* seq,int d)
{
 seq->elements[++seq->top] = d;
}
int pop(StackSeq* seq)
{
 assert(!isEmpty(seq));
 return seq->elements[seq->top--];
}
bool isEmpty(StackSeq* seq)
{
 return(seq->top ==-1);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值