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

所有网站收录入口水果店推广营销方案

所有网站收录入口,水果店推广营销方案,二级网站建设检查评比方案,wordpress数字中文主题目录 栈(Stack)栈顶(top)栈底(bottom)空栈(不含任何元素) 创建栈 入栈操作 出栈操作 销毁一个栈 计算栈的当前容量 实例分析 栈的插入操作叫做进栈(Push&#xf…

目录

栈(Stack)栈顶(top)栈底(bottom)空栈(不含任何元素)

创建栈 

入栈操作

出栈操作

销毁一个栈

计算栈的当前容量

实例分析


栈的插入操作叫做进栈(Push),或者称为压栈、入栈。

栈的删除操作叫做出栈(Pop),或者称为弹栈。

栈又称为先进后出(last in first out)的后进先出原则,称为后进先出的线性表(LIFO)。 

栈的本质上也是一个线性表,线性表有两种存储形式,那么栈也有分为栈的顺序存储结构和栈的链式存储结构

最开始栈中不含有任何数据,叫做空栈,此时栈定就是栈底。然后数据从栈顶进入,栈顶栈底分离,整个栈的当前容量变大。数据出栈时,从栈顶移出,栈顶下一,整个栈的当前容量变小。

栈的顺序存储结构:

typedef struct 
{ElemType *base;ElemType *top;int stacksize;}sqStack;

 这里定义了一个顺序存储的栈,它包含了三个元素:base,top,stacksize。其中base是指向栈底的指针变量,top是指向栈顶的指针变量,stacksize指示栈的当前可使用的最大容量。

创建栈 

#define STACK_INIT_SIZE 100 initStack(sqStack *s)//创建栈 
{s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));if(!s->base)exit(0);s->top=s->base;		//最开始,栈顶就是栈底。 s->stacksize = STACK_INIT_SIZE;} 

入栈操作

#include <stdlib.h>
#define STACKINCREMENT 10Push(sqStack *s,ElemType e)		//入栈操作 
{if(s->top - s->base >= s->stacksize){//如果漫展,追加空间 s->base = (ElemType *)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(ElemType));if(!s->base)exit(0);s->top=s->base + s->stacksize;s->stacksize = s->stacksize + STACKINCREMENT;}*(s-top)=e;s->top++; } 

出栈操作

出栈操作就是在栈顶取出数据,栈顶指针随之下移的操作。

每当从栈内弹出一个数据,栈的当前容量就-1.

Pop(sqStack *s,ElemType *e)
{if(s->top==s->base)//栈已空return;*e=*--(s->top); 
}

销毁一个栈

DestrogStack(sqStack *s)
{int i,len;len = s->stackSize;for(i=0;i<len;i++){free(s->base);s->base++;}s->base = s->top =NULL;s->stacksize = 0;
}

计算栈的当前容量

计算栈的当前容量也就是计算栈中元素的个数,因此只要返回s.top-s.base 即可。

栈的最大容量是指该栈占据内存空间的大小,其值是s.stackSzie,它与栈的当前容量不是一个概念。

int StackLen(sqStack s)
{return (s.top-s.base+1);
}

实例分析

利用栈的数据结构特点,将二进制转换为十进制数。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10typedef char ElemType;
typedef struct
{ElemType *base;ElemType *top;int stackSize; }sqStack;void InitStack(sqStack *s)
{s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));if(!s->base)exit(0);s->top = s->base;s->stackSize=STACK_INIT_SIZE;
}void Push(sqStack *s,ElemType e)
{if(s->top - s->base>= s->stackSize){s->base=(ElemType *)realloc(s->base,(s->stackSize+STACKINCREMENT) * sizeof(ElemType));if(!s->base){exit(0);}}*(s->top)=e;s->top++;} void Pop(sqStack *s,ElemType *e)
{if(s->top==s->base){return;}*e = *--(s->top);
}int StackLen(sqStack s)
{return (s.top- s.base);
}int main(void)
{ElemType c;sqStack s;int len ,i,sum=0;InitStack(&s);printf("请输入二进制数,输入#符号表示结束!");scanf("%c",&c);while(c!='#'){Push(&s,c);scanf("%c",&c);}getchar();len = StackLen(s);printf("栈的当前容量是:%d\n",len);for(i=0;i<len;i++){Pop(&s,&c);sum=sum+(c-48)*pow(2,i);}printf("%d",sum);return 0;
}

http://www.yayakq.cn/news/599211/

相关文章:

  • 分栏型网站建立公司网站视频
  • 南昌金启网站建设怎么制作自己的签名
  • 房产中介网站建设模板企业网页制作公司青岛
  • 无锡网站建设网简述建设一个网站的一般过程
  • 机房建设网站泉州找工作网站
  • 郑州网站建设口碑好wordpress加载中
  • 退役厅网站建设中标公告双语网站建设定制开发
  • 如何做网站宣传自己大岭山镇做网站
  • 提供网站建设课程代码绵阳市住房 和城乡建设局网站
  • 长春火车站出入最新规定营销网站制作费用
  • 上海h5网站开发常德车管所网站
  • 创世网站人力资源公司外包
  • 深远互动 网站建设wordpress 主机模板
  • 咸宁公司网站建设建设网站需要造价
  • 上海知名的网站建设巨野做网站
  • 做网站的公司利润多少呢黄冈论坛遗爱网
  • 网站视频主持人制作南沙哪有做网站的
  • 网站建设 html5呼市城乡建设厅网站
  • win7建网站教程毕业生登记表自我鉴定模板
  • 网站上添加子栏目天元建设集团有限公司青岛分公司
  • 劳动仲裁院网站建设怎样做网站手机和电脑通用
  • 荆州房地产网站建设怀远网站建设
  • 中国做的比较好的网站设计公司有哪些两学一做专题网站用途
  • 定南建设银行网站点福永营销型网站多少钱
  • 深圳市建设工程交易中心网站北京王府井步行街上来往最多的是什么人
  • 网站开发什么语言好工作服厂家无锡 帛裳服饰专业
  • 公司网站排名中国水利建设网站
  • 常州网站建设公司信息杭州网站建设方案推广
  • ie8打不开建设银行网站桥的设计网站建设
  • 群艺馆网站建设方案拼多多seo怎么优化