3.21(双向栈)

原创 2016年08月30日 15:32:00
因为top0和top1都指向最后一个元素的下一个位置,所以最好不要把数组占满,如存储6个数,最好开一个7个位置的数组。
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct stack
{
    int* base;
    int top[2];
    int size;
}qstack,*pstack;
void init(pstack s,int size)
{
    s->base=(int*)malloc(size*sizeof(int));
    s->top[0]=0;//数组头
    s->top[1]=size-1;//数组尾
    s->size=size;
}

void push(pstack s,int i,int num)
{
    if(s->top[0]==s->top[1])//如果是满栈
        return ;
    else if(i==0)//如果从左边进入
    {
        s->base[s->top[0]]=num;
        s->top[0]=s->top[0]+1;
    }
    else if(i==1)//如果从右边进入
    {
        s->base[s->top[1]]=num;
        s->top[1]=s->top[1]-1;
    }
}

void pop(pstack s,int i,int &num_)
{
    if(s->base[s->top[0]]==0 && i==0)//如果左边是空栈
        return ;
    else if(s->base[s->top[1]]==1 && i==1)//如果右边是空栈
        return ;
    else if(i==0)
    {
        s->top[0]--;
        num_=s->base[s->top[0]];
    }
    else if(i==1)
    {
        s->top[1]++;
        num_=s->base[s->top[1]];
    }
}
void  traverse(pstack s,int i)
{
    pstack q=s;
    if(i==0)
    {
        q->top[0]--;//因为指向的是最后一个元素的下一个位置,所以需要先减一;
        while(q->top[0]>=0)
        {
            cout<<q->base[q->top[0]];
            q->top[0]--;
        }
    }
    if(i==1)
    {
        q->top[1]++;
        while(q->top[1]<=(q->size-1))
        {
            cout<<q->base[q->top[1]];
            q->top[1]++;
        }
    }
}
int main()
{
    qstack s;
    init(&s,7);
    push(&s,0,1);
    push(&s,0,2);
    push(&s,0,3);
    push(&s,1,3);
    push(&s,1,2);
    push(&s,1,1);
    traverse(&s,1);
    
}
http://blog.csdn.net/mixuema/article/details/49228541
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

算法设计题3.21-栈和队列-第3章-《数据结构习题集》-严蔚敏吴伟民版

算法设计题3.21-栈和队列-第3章-《数据结构习题集》-严蔚敏吴伟民版。

<学习笔记>arcgis api for javascript 3.21和4.4加载天地图

arcgis js api目前有两条路线,4.4支持2D和3D地图,3.21主要做2D全景图,两种的地图加载方式和接口的用法还是有些不同的,以前用3.21加载天地图的时候直接用天地图的REST url...

双向栈的操作

libsvm学习-1 libsvm-3.21在Python-3.4.4, Pycharm, windows环境下的安装过程

Libsvm学习-1Libsvm是实现svm很方便的一个工具。本文就将介绍一下libsvm-3.21在Python-3.4.4, Pycharm, windows环境下的安装过程。

数据结构 双向栈 代码

【SICP练习】108 练习3.21

练习3-21原文Exercise 3.21. Ben Bitdiddle decides to test the queue implementation described above. He t...
  • NoMasp
  • NoMasp
  • 2015-03-25 11:09
  • 1090
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)