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

珠海做网站的公司百度爱采购推广怎么入驻

珠海做网站的公司,百度爱采购推广怎么入驻,网站设计与制作软件,建网站公司 优帮云目录 栈的定义 栈的结构选取 链式储存结构和顺序栈储存结构的差异 栈的代码实现 "stack.h" "stack.c" 总结 栈的定义 栈:栈是限定仅在表尾进行插入和删除操作的线性表。 我们把运行插入的和删除的一段叫做栈顶(TOP&#xff…

目录

栈的定义

栈的结构选取

链式储存结构和顺序栈储存结构的差异

栈的代码实现

"stack.h"

"stack.c"

总结


栈的定义

栈:栈是限定仅在表尾进行插入和删除操作的线性表。

我们把运行插入的和删除的一段叫做栈顶(TOP),另一段叫做栈底(BOTTOM),不含任何数据元素的栈称为空栈。栈由称后进先出(Last In Fast Out)的线性表,简称LIFO结构。

栈的插入操作,叫做进栈,也称压栈,入栈。

栈的删除操作,叫做出栈,也叫做弹栈。

首先,我们来举几个比较容易理解的生活中的例子来帮助我们理解栈的特性吧。

        首先,我们可以看到上面的烤串,是不是很有食欲,想想一下,当我们串肉到烤串上的时候,是不是一串一串的把肉穿上去,并将它移到稍微下面一点的位置,我们暂且叫它栈底吧,然后我们会继续的将一块一块的肉串上去,直到串到木签的最上方,我们就称它为栈定吧。这种就是入栈的方式。

        然后,当烤串烤好了的时候,端上桌子的时候,你拿起一串,是不是从最上方开始吃,最后再吃最下方的,这就是出栈的方式。

我们再来看一看枪类武器的弹夹。当我们上子弹的时候,最先上进弹夹的子弹在最下面,最后上进去的子弹在最上面,当我们开枪打出的时候,最上面的子弹先被打出,最下面的子弹会被最后打出,其实这也和我们的栈有一点联系。

我们再来看看,是不是每一个网页的左上角都有一个后退的标识呢,这就和我们的栈有关。

栈的结构选取

当我们来实现栈的时候,可以使用链式储存结构和顺序栈的储存结构来实现。

链式储存结构和顺序栈储存结构的差异

        首先,我们一般不会使用链式储存结构来实现栈,首先我们要明确栈的特性,它只需要从一端入一端出。对比一下顺序栈和链栈,它们入数据出数据的时候再空间复杂度上都是相同的,都是O(1)。对于空间性能来说,顺序栈的空间是固定的,如果空间不够就需要扩容,这样就会导致空间浪费,但它的优点就是定位很方便。但是对于链栈来说,我们需要要求每一个节点都需要有一个指针域,这同时也增加了一些内存的开销,但对于栈的长度无限制。

        如果栈的使用过程中元素变化不可料,有时很小,有时很大,那么最好是使用链栈,反之,如果它的变化在可控范围内,建议使用顺序栈会好一些。

栈的代码实现

"stack.h"

#pragma once
#define _CRT_SECURE_NO_WARNINGS 1//函数声明 结构体实现
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>
#include "stack.h"typedef int stdatatype;typedef struct stack
{stdatatype* arr;int top;int capcity;
}stack;//初始化栈
void Initstack(stack* st);//销毁栈
void DestroyStack(stack* st);//压栈
void Pushstack(stack* st, stdatatype x);//出栈
void Popstack(stack* st);//返回栈顶元素
stdatatype Topstack(stack* st);//栈元素大小
int StackSize(stack* st);//判断栈是否为空
bool StackEmpty(stack* st);

"stack.c"

#include "stack.h"//函数实现//初始化栈
void Initstack(stack* st)
{assert(st);//默认给4个元素的空间大小st->arr = (stdatatype*)malloc(sizeof(stdatatype) * 4);if (st->arr == NULL){perror("malloc fail");//-1表示异常退出exit(-1);}st->capcity = 4;//栈顶为有效元素的下一位st->top = 0;
}//销毁栈
void DestroyStack(stack* st)
{	assert(st);//直接释放掉free(st->arr);//将指针置空st->arr = NULL;st->capcity = 0;st->top = 0;
}//压栈
void Pushstack(stack* st, stdatatype x)
{	assert(st);//需要判断空间是否够用,不够就扩容if (st->capcity == st->top){stdatatype*tmp= (stdatatype*)realloc(st->arr, sizeof(stdatatype) * 2 * st->capcity);if (tmp == NULL){perror("realloc fail");//-1表示异常退出exit(-1);}st->arr = tmp;st->capcity *= 2;}//直接栈顶插入,然后top++st->arr[st->top] = x;st->top++;
}//出栈
void Popstack(stack* st)
{assert(st);assert(st->top > 0);//直接top--st->top--;}//返回栈顶元素
stdatatype Topstack(stack* st)
{	assert(st);assert(st->top > 0);return st->arr[st->top-1];
}//栈元素大小
int StackSize(stack* st)
{assert(st);return st->top;
}//判断栈是否为空
bool StackEmpty(stack* st)
{	assert(st);//为空top=0 freturn	st->top == 0;
}

总结

        栈是一种比较特殊的结构,它的特性就是先入后出,后入先出,它的主要应用是在递归中。最后送同学们一些话。

        人生,就像是一个很大的栈演变。出生时你赤条条地来到人世,慢慢地长大,渐渐地变老,最终还得赤条条地离开人世间。

        人生,更需要有进栈出栈的精神体现。在哪里跌倒,就应该在哪里爬起来。无论陷入何等的困境,只要抬头能仰望蓝天,就有希望,不断进取,你就可以让出头之日重现。困难不会永远存在,强者才能勇往直前。

        希望我上面分享的对于栈的理解对大家有所帮助。

http://www.hengruixuexiao.com/news/54274.html

相关文章:

  • 网站做推广搜索引擎排名竞价
  • 网站更新维护 怎么做企业网站seo案例分析
  • 郑州网站建设喝彩网页模板免费下载网站
  • 电子商务网站建设与管理课后习题网站制作流程和方法
  • 网站的投票系统怎么做百度推广效果怎样一天费用
  • 大的网站建设公司百度推广开户费
  • 做网站的骗术360优化大师官方官网
  • 站群管理系统属于网络营销特点的是
  • 做网站职业咋样网页设计与制作步骤
  • 东莞保安公司投诉电话南宁seo外包服务
  • 六盘水做网站浙江网站建设平台
  • 网站seo分析案例千度搜索引擎
  • 聊城集团网站建设磁力蜘蛛搜索引擎
  • 服务好的企业建站拉新推广怎么快速拉人
  • 容易做的网站济南做seo排名
  • 青田县住房和城乡规划建设局网站手游推广平台哪个好
  • 前端自己做博客网站阿里指数app下载
  • 网站建设需要做些什么十大流量平台
  • 注册网站建设公司旅游推广赚佣金哪个平台好
  • sever2012 网站建设南宁seo收费
  • wordpress浮动图盐城seo营销
  • 社交网站开发项目计划报告厦门网站综合优化贵吗
  • wordpress清理插件贵港seo关键词整站优化
  • 网站欢迎页模板本地推广最有效的方法
  • 可靠的广州做网站种子搜索在线 引擎
  • 做蛋糕的网站在线培训系统
  • 网站建设的pest分析长尾关键词挖掘工具
  • 建设网站用什么好百度seo公司一路火
  • 美国二手表网站桂林网站设计
  • 贵阳网站开发制作公司低价刷粉网站推广