现在的位置: 首页 > 综合 > 正文

栈、队列、vector、list的设计

2013年04月20日 ⁄ 综合 ⁄ 共 700字 ⁄ 字号 评论关闭

现在很多时候我们喜欢用一些别人开发的开源库,比如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);
}

 

抱歉!评论已关闭.