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

丰顺网站建设温州知名网站

丰顺网站建设,温州知名网站,自己在线制作logo免费设计软件,简述营销网站建设包含哪些内容目录 栈(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/810470/

相关文章:

  • 网页制作建立站点网站搭建网站制作
  • 入门做网站wordpress sqlite
  • 编程 毕业设计代做网站seo管理
  • 个人微信公众号怎么做微网站吗唐山网站建设zzvg
  • 网站建设分类车工订单网站
  • 旅游社网站建设规划书建设工业网站
  • 如何开发微信微网站dw做的网站
  • 网站建设 辉煌电商网站建设资金预算
  • 嘉兴做企业网站的公司机械配件网站建设
  • 天河网站建设哪家好网站收录
  • 上海网站建设培训网站建设论文标题
  • 网站备案查询工信部app但无法上网
  • 怎么增加网站反链赣州市建设局
  • 网站定制公司蒙特电子商务网站建设与规划
  • 厦门商城网站开发wordpress mysql调整
  • 网站备案期间 权重网站开发技术历史
  • 福建建设工程交易网站网站广告投放价格表
  • 承德网站设计公司婚庆网站搭建的流程
  • 建最便宜的网站要多少钱wordpress 缩略图优化
  • 邯郸专业做网站多少钱网页的分类
  • 百度知道山东网站建设17一起做网站株洲
  • 网站建设需要汇报哪些内容制作网站需要学什么软件有哪些内容
  • 贵州灵溪seo整站优化wordpress 不支持svg
  • 做网站用什么语言好阿里巴巴官网下载
  • 深圳商城网站设计多少钱企业logo设计注意事项
  • 网站图片描述怎么写无锡网站建设君通科技公司
  • seo网络贸易网站推广电子商务网站建设jsp考卷
  • 建设部网站公示钦州公租房摇号查询自己服务器可以做网站
  • 房屋设计软件有哪些seo搜索引擎优化论文
  • 如何做电商网站 昆明新营销方式有哪些