顺序栈和顺序队列

顺序栈和顺序队列

顺序栈

#define N 100
/*顺序栈定义*/
typedef struct
{
    bintree data[N];
    int top;
    int tag[N];
}seqstack;
void init(seqstack *s)   /*初始化空栈*/
{
    s->top=-1;
}
int empty(seqstack *s)   /*判断栈是否为空*/
{
    if (s->top>-1) return 0;
    else return 1;
}
int full(seqstack *s)   /*判断栈是否为满*/
{
    if (s->top==N-1) return 1;
    else return 0;
}
void push(seqstack *s ,bintree x)   /*进栈*/
{
    if (!full(s))
        s->data[++s->top]=x;
}
bintree pop(seqstack *s)   /*出栈*/
{
    if (!empty(s))
        return s->data[s->top--];
}

顺序队列

#define N 100/*队列可能达到的最大长度*/
/*顺序队列定义*/
typedef bintree qelemtype;
typedef struct
{
 qelemtype *base;
 int front,rear;
}sqqueue;
int initQueue(sqqueue &q)/*初始化*/
{
 q.base=new qelemtype[N];
 if(!q.base) exit(-1);
 q.front=q.rear=0;
 return 0;
}
int queuelength(sqqueue q)/*求队列长度*/
{
    return(q.rear-q.front+N)%N;
 }

int enqueue(sqqueue &q,qelemtype e)/*入队*/
{
 if((q.rear+1)%N==q.front)
  return -1;
 q.base[q.rear]=e;
 q.rear=(q.rear+1)%N;
 return 0;
}
int dequeue(sqqueue &q,qelemtype &e)/*出队*/
{
 if(q.front==q.rear) return -1;
 e=q.base[q.front];
 q.front=(q.front+1)%N;
 return 0;
}
qelemtype gethead(sqqueue q)/*去队头元素*/
{
   if(q.front!=q.rear)
      return q.base[q.front];
 }
发布了20 篇原创文章 · 获赞 7 · 访问量 7079

猜你喜欢

转载自blog.csdn.net/YCSDNG/article/details/83721770