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

网站开发需要经费么百度云官网入口

网站开发需要经费么,百度云官网入口,百度数据分析,汽车之家网站是谁做的一.栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。 栈中的数据元素遵守 后进先出 LIFO ( Last In First Out )的原则。…

一.栈的概念及结构

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。 栈中的数据元素遵守 后进先出 LIFO Last In First Out )的原则。(可以看成子弹与弹夹的关系)
压栈:栈的插入操作叫做进栈 / 压栈 / 入栈, 入数据在栈顶
出栈:栈的删除操作叫做出栈。 出数据也在栈顶

二.栈的对比

栈的实现数组和链表都可以,下面我们来对比下各种实现:

1.数组实现:

相当于之前顺序表的尾插尾插用尾去做了栈顶,非常合适。唯一缺陷就是:空间不够,需要增容

2.单链表实现:
如果要用单链表实现,那么就 用头去做栈顶更好,这样可以避免找不到前面的,入栈和出栈效率都是 0(1),缺点:每一次都要开辟空间,而且空间消耗远比数组大。
3.双链表实现:
此时可以用尾做栈顶,双向链表效率也为0(1),但是双链表缺点更大:不但每次都要开辟空间,而且空间消耗比单链表还要严重。
因此,我们用数组其实更好,增容也不是每次都增的,总体较为合适!
下面我们开始用数组实现栈:(放心,绝对比链表简单)

三.栈的实现

第一步:实现结构体

//定义结构体
typedef int STDataType;
typedef struct Stack
{STDataType* arr;//数据int top;//栈顶int capacity;//容量
}SS;

第二步:实现基本接口

// 初始化栈定义
void StackInit(SS* ps)
{//检查assert(ps);//开辟空间ps->arr = (STDataType*)malloc(sizeof(STDataType) * 4);//注意:开辟的空间为STDataType类型ps->top = 0;//此时栈顶为0ps->capacity = 4;//容量为开辟的4个STDataType空间大小
}
// 入栈定义
void StackPush(SS* ps, STDataType x)
{//检查栈空间是否存足if (ps->top == ps->capacity){//空间不够,扩容STDataType* tmp = (STDataType*)realloc(ps->arr, ps->capacity * sizeof(STDataType) * 2);if (tmp == NULL){exit(-1);}else{ps->arr = tmp;ps->capacity *= 2;}}//开始入栈操作ps->arr[ps->top] = x;ps->top++;
}
// 出栈定义
void StackPop(SS* ps)
{//判断assert(ps);//栈不能为空assert(ps->top > 0);ps->top--;
}
// 获取栈顶元素定义
STDataType StackTop(SS* ps)
{//判断assert(ps);//栈不能为空assert(ps->top > 0);return ps->arr[ps->top-1];
}
// 获取栈中有效元素个数定义
int StackSize(SS* ps)
{assert(ps);return ps->top;
}
// 检测栈是否为空,如果为空返回false,如果不为空返回true
bool StackEmpty(SS* ps)
{assert(ps);return ps->top == 0;
}
// 销毁栈定义
void StackDestory(SS* ps)
{assert(ps);free(ps->arr);ps->arr = NULL;ps->top = 0;ps->capacity = 0;
}

这边建议大家还是边实现边检查,不然出问题了不好找。

由于我这写一个检查一个太耗时间,所以我就写完了统一检查:

#include "Stack.h"
void test1()
{SS s1;StackInit(&s1);StackPush(&s1, 1);StackPush(&s1, 2);StackPush(&s1, 3);StackPush(&s1, 4);StackPush(&s1, 5);StackPush(&s1, 6);StackPush(&s1, 7);StackPush(&s1, 8);StackPush(&s1, 9);StackPush(&s1, 10);while (!StackEmpty(&s1)){printf("%d ",StackTop(&s1));StackPop(&s1);}printf("\n");StackDestory(&s1);
}
int main()
{test1();return 0;
}
结果如下:
最后,祝福大家身体健康,万事如意!
http://www.yayakq.cn/news/225176/

相关文章:

  • 网站推广链接怎么做网站优化成功案例
  • 网站建设实训的报告浙江企业黄页大全
  • 衡阳市建设局网站百度手机网站自助建站
  • c2c网站开发网站运营与网站策划
  • 做网站有高手没有厦门本地企业网站建设
  • 利用技术搭建网站做网站代理东莞响应式网站建设定制
  • 济南网站设计报价互联网做网站
  • 浙江省网站建设公司wordpress类似
  • 堵博网站建设西昌网站制作
  • 网站制作价格甄选乐云践新手机网站怎么做的
  • 网站建设需要什么内容网站风格设计
  • 人和做网站广告设计主要做什么
  • 广东省交通建设监理检测协会网站wordpress 导航栏图标
  • 江宁网站建设价格中企动力技术支持网站
  • 一个专门做熊的网站做中英文网站要注意什么
  • 网站建设方案保障措施建设网站商城需要多少费用
  • 中文wordpress网站模板下载失败网站开发软件学习
  • 中国城乡住建部建设部网站没有网站怎么做CPC
  • 全球十大网站排名重庆网站设计总部
  • 顺德手机网站设计价位设计师培训班
  • 深圳网站制作必选祥奔科技网络系统管理是做什么的
  • 程序员做网站类网站搜索引擎优化的简称
  • 什么是可信网站认证做网站的收费标准
  • wordpress安装语言设置关键词优化流程
  • 卡地亚手表官方网站查询网站续费一年多少钱
  • 找别人做网站wordpress 主题 新闻_
  • 世界网站流量排名注册网站挣钱
  • 黑群晖建设个人网站庆网站制作公司
  • 外贸自建站的推广方式百度推广销售话术
  • 山东做网站的杭州市萧山区哪家做网站的公司好