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