当前位置: 首页 > wzjs >正文

网站建设选哪个微信公众号调用WordPress

网站建设选哪个,微信公众号调用WordPress,网站推广费用一般多少钱,网站建设方案 百度文库一、引入 在数学史上有这样一个经典问题——汉诺塔问题。 通过动图演示我们发现每一个圆片的运动是什么样的呢? 我们发现,第一个放入的最大圆片将位于整个塔的最底端。所以若想将最大圆片拿出来,就得将压在它身上的所有圆片先按顺序取出才能将…

一、引入


        在数学史上有这样一个经典问题——汉诺塔问题。

        通过动图演示我们发现每一个圆片的运动是什么样的呢?

        我们发现,第一个放入的最大圆片将位于整个塔的最底端。所以若想将最大圆片拿出来,就得将压在它身上的所有圆片先按顺序取出才能将它移出。这就出现了这样一个先入后出的现象,也就是栈的基本运行逻辑

        接下来,就让我们一起来学习栈吧!

二、栈


2.1、栈的构成


通过引入,我们明白了栈是怎么进行数据的储存的。那么接下来就该介绍栈是怎么构成的啦!

先来认识认识栈的二要素吧。

栈一般由栈顶、栈底构成。就跟叠乐高一样。一层层堆叠下去。具体的样子如下图所示

         是不是就像一个盒子,你往里面一个一个的放东西,最下面的那个就叫栈底,最上面那个就叫栈顶,而当这个盒子里面什么东西都没有的情况就叫做空栈。

        下面使用代码构建栈这一数据结构的过程。

#define MAXSIZE=50 //首先,得先确定一个大盒子的容量,也就是分配空间的大小;
typedef int SElemType;//自定义一个int类型的数据类型。
typedef struct{SElemType data[MAXSIZE];//用于存放需要储存的数据SElemType *top;//设置栈顶
}SqStack;

        下面是有关于栈的一些函数。它们是怎么被构造出来的大家就接着往下看吧。

操作函数功能
InitStack(&S)初始化一个空栈
StackEmpty(S)判断一个栈是否为空栈
Push(&S,x)进栈,将x插入使之成为新栈顶
Pop(&S,&x)出栈,弹出栈顶元素,并用x返回
GetTop(S,&x)读取栈顶元素,并用x返回
Destory(&S)销毁栈S,并释放其空间。
ClearStack(&S)将栈S清除为空栈
StackLength(S)返回S的元素个数,即栈的长度
StackTraverse(S)从栈底到栈顶依次对S的每个元素进行访问

2.2、栈的基本操作


        2.2.1、栈的初始化

        我们知道了栈需要一个大盒子来充当装小盒子的空间,而小盒子就用来储存我们的数据。这时候我们需要一个确定栈顶的标志来辅助栈的运算所以我们栈的初始化就是整个框架的搭建。来看看代码吧!

void InitStack(SqStack *S){S->top=-1;//由于数据的排放中0是第一位。使用用-1表示数据为空
}

        2.2.2、空栈的判断

        想必大家已经知道了空栈是如何定义的。当一个栈是空栈的时候,栈顶是不存在的,所以我们定义的栈顶top就是-1。所以反过来说,如果我们的top为-1那这个栈就是空栈。

Status StackEmpty(SqStack S){if(S.top==-1){return OK;      //栈空}else{return ERROR;}
}

        2.2.3、栈的入栈

        我们知道当往大盒子里放入了一个物体的时候我们盒子内部的“高度”就会随着增加。而我们的栈顶也会变大。所以当我们放入一个新的栈元素之后我们的栈顶就会变为新加入的那个元素。而我们标记栈顶的指针top也会随之指向新元素。这样我们就完成了一次入栈操作。

Status Push(SqStacdk *S,ElemType e){//首先判断此栈是否为满栈if(S->top==MAXSIZE-1){return ERROR;}S->top++;    //栈顶元素加一S->data[S->top]==e;    //将新元素赋值给栈顶空间return OK;
}

        2.2.4、栈的出栈

        同入栈操作一样。关键点在于栈顶和标记栈顶的指针指向的元素的变化。而入栈的操作是“高度”变高,top++;那么反过来出栈是不是就是“高度”减小,top--呢?大家仔细思考一下看看代码和图解吧!

Status Pop(SqStacdk *S,ElemType *e){//首先判断此栈是否为空栈if(S->top==-1){return ERROR;}*e=S->sata[S->top];//将拿出来的值赋值给eS->top--;    //栈顶元素减一return OK;
}

        2.2.5、读取栈顶的元素

        当我们需要读取栈顶元素的时候需要怎么做呢?想必大家在了解了栈的结构之后一看,栈不是基于结构体的嘛,而且又有对应的指针指代,那就直接用->就可以访问了对吧!

Status GetTop(SqStack S,ElemType *e){//判断是否为空栈if(S->top==-1){return ERROR;}*e=S->data[S->top];return OK;
}

3、共享栈


3.1、共享栈的定义与构造


        来看下面这样一张图:

        两个人对着一个两端开口的管子吹气,将整个空间充满。而其中的虫子则是来回移动。现在我们有一个栈,并给它赋予50大小的空间。这时候,我们如果将最左边序号为0的空间看作栈底0,最右边序号为49的空间看作栈底1.这样当两个栈各自进行入栈操作后就会相遇对吧,最后将整个栈空间填满,而两个栈的分界点就是图中虫子的位置。所以我们得到了这样一张图。

用代码构造如下:


#define MAXSIZE 50  //给栈规定空间大小
typedef int ElemType;   //自定义int类型的数据类型ElemTypetypedef struct{ElemType data[MAXSIZE];int top0;	//栈0栈顶int top1;	//栈1栈顶
}SqDoubleStack;

 3.2、共享栈的进栈与出栈


        共享栈的出入栈的操作相当于将两个普通栈的出入栈操作放到了同一个空间容器中且栈顶彼此相互靠近。

代码表示如下:

//共享栈的入栈Status Push(SqDoubleStack *S, Elemtype e, int stackNumber){//判断是否为满栈if(S->top0+1 == S->top1){   return ERROR;}
//用if;else语句判断元素所需要进入的栈if(stackNumber == 0){   //栈0有元素进栈S->data[++S->top0] = e; //若栈0则先top0+1后给数组元素赋值}else if(satckNumber == 1){ //栈1有元素进栈S->data[--S->top1] = e; //若栈1则先top1-1后给数组元素赋值}return OK;
}//共享栈的出栈
Status Pop(SqDoubleStack *S, ElemType *e, int stackNumber){
//先判断需要进行操作的是哪个栈。在进行空栈的判定。最后在进行出栈操作if(stackNumber == 0){if(S->top0 == -1){return ERROR;   //说明栈0已经是空栈,溢出}*e = S->data[S->top0--]; //将栈0的栈顶元素出栈,随后栈顶指针减1}else if(stackNumber == 1){if(S->top1 == MAXSIZE){return ERROR;   //说明栈1是空栈,溢出}*e = S->data[S->top1++];    //将栈1的栈顶元素出栈,随后栈顶指针加1}return OK;
}

4、链栈


4.1、链栈的表示与实现


        链栈是指采用链式存储结构实现的栈。通常采用单链表来表示。对于链栈的理解其实也很简单。普通的栈采用的是顺序结构,栈与栈之间的地址是紧密相连的。而链栈的分布较为散乱,彼此之间通过指针相连。

        在此使用StackNode表示,定义如下:

typedef struct StackNode{ElemType data;struct StackNode *next;
}StackNode,*LinkStack;

由于栈的主要操作是在栈顶插入和删除,所以用链表的头部作为栈顶是最方便的.

4.2、链栈的基本操作


4.2.1、链栈的初始化

        链栈的初始化就是构造一个空栈,所以直接将栈顶指针设置为NULL就好了

代码描述

4.2.2、链栈的入栈和出栈

        链栈的入栈和单链表的头部插入是大相径庭的。主要有以下几个步骤:

a、为入栈元素e分配空间,用指针p指向。

b、将新结点数据的内容部分(数据域)设置为e

c、将新结点插入栈顶

d、修改栈顶指针为p

代码描述:

Status Push(SqStacdk *S,ElemType e){//在栈顶插入元素ep=new StackNode;//p->data=e;//将新节点中的内容部分设置为ep->next=S;//将新节点插入栈顶S=p;//修改栈顶指针为preturn OK;
}

        链表的出栈和顺序栈一样,在进行出栈操作前要先判断是否为空栈。但是链栈出栈后需要释放掉出栈元素所在的栈顶空间。

主要有以下五步:

a、判断栈是否为空,空则返回ERROR

b、将栈顶元素赋值给e

c、临时保存栈顶元素空间,以备释放

d、修改栈顶指针,指向新的栈顶元素

e、释放原栈顶元素的空间。

代码描述:

Status Pop(SqStacdk *S,ElemType *e){//首先判断此栈是否为空栈if(S==NULL){return ERROR;}*e=S->data[S->top];//将拿出来的值赋值给ep=S;//用p临时保存栈顶元素空间,以备释放S=S->next;//修改栈顶指针deleat p;//释放原栈顶空间。return OK;
}

4.2.3、取栈顶元素

        和顺序栈一样,当栈非空时,此操作返回当前栈顶元素的值,栈顶指针S不变。

算法描述:

elemType GetTop(LinkStack S){//返回S的栈顶元素,不修改栈顶指针if(S!=NULL){//栈非空return S->date;//返回栈顶元素}
}

         如果我的内容对你有帮助,在下就厚着脸皮讨个点赞关注。如果你有更好的想法,还望留在评论区让我来参考学习。我将不胜感激并努力创作出更好的内容。


文章转载自:

http://Xsw4Po2H.zfkxj.cn
http://LceOAYKx.zfkxj.cn
http://aBx2K2vl.zfkxj.cn
http://vXv7kln8.zfkxj.cn
http://auTdJHUS.zfkxj.cn
http://0y59tLMy.zfkxj.cn
http://JYaYRe1o.zfkxj.cn
http://Uij9QvwO.zfkxj.cn
http://F45F3PFW.zfkxj.cn
http://TH0XuxTX.zfkxj.cn
http://F2lMlZUF.zfkxj.cn
http://wOBpS9mS.zfkxj.cn
http://aAKC2fP4.zfkxj.cn
http://1xAKfLmG.zfkxj.cn
http://RlizVRKR.zfkxj.cn
http://AX0kRv5O.zfkxj.cn
http://EtQIvrtk.zfkxj.cn
http://uUDiwG2f.zfkxj.cn
http://IrcWzaeT.zfkxj.cn
http://EkzjIZY7.zfkxj.cn
http://WXPlooWU.zfkxj.cn
http://YKN5uyqs.zfkxj.cn
http://L2LMRTnZ.zfkxj.cn
http://zUCEOITh.zfkxj.cn
http://qsURJs0F.zfkxj.cn
http://q8Om997C.zfkxj.cn
http://I5rvhgXH.zfkxj.cn
http://S3cKDuxq.zfkxj.cn
http://gvGKkc2K.zfkxj.cn
http://LFcHBG3Y.zfkxj.cn
http://www.dtcms.com/wzjs/658940.html

相关文章:

  • 大兴网站建设优化seo广西城乡和建设厅网站
  • 绿色电器公司网站psd模板怎么看一个网站是否被k
  • 乐都网站建设多少钱北京代理网站备案电话
  • 鞍山网站哪家好公司网站制作设计报价
  • 网站设计与建设第一章广东网站设计品牌设计
  • 网站维护一般多少钱c2c模式是什么意思
  • 网站跳出的广告是怎么做的网站开发大全
  • 做一个回收网站怎么做个人备案的网站内容
  • 通城做网站公司wordpress目录在哪里
  • 凡客诚品官方网站首页北京广告制作公司
  • 做网站哪个编辑器好用门户网站群建设
  • 扬州门户网站开发公司成都房产网签查询
  • 中国站长素材网wordpress的点商
  • 天津和平做网站哪家好搞定设计在线制作
  • 做网站卖货苏州建设工程检测协会网站
  • 懒人免费建站模板大宗商品交易平台推荐
  • 网站网络推广策略和电子商务js页面下载wordpress
  • 网站可以免费做吗dede小说网站模板
  • 汨罗做网站价格创建企业需要什么条件
  • 从化区城郊街道网站麻二村生态建设如何建设企业网站
  • 微站开发360免费wifi无法在win10下正常运行
  • 浙江建设信息港怎么查询账号seo是什么
  • 天空建筑网站ai网站
  • 建设一个网站要多少钱重庆建工集团有限公司官网
  • 哪家建网站重庆免费建网站
  • 自己公司的网站怎么编辑器网站怎么提交收录
  • 网站模板编辑器广东建设信息网行业版
  • 杭州网站前端建设备案网站需要多久
  • 12306网站如何做火车票候补做网站话术
  • 怎么用网站做类似微博html5标签