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

做网站建设的目的深圳百度推广网站建设

做网站建设的目的,深圳百度推广网站建设,烟花代码html,网站企业备案代理文章目录 一、引言二、栈的基本概念1、栈是什么2、栈的实现方式对比3、函数栈帧 三、栈的实现1、结构体定义2、初始化3、销毁4、显示5、数据操作 四、分析栈1、优点2、缺点 五、总结1、练习题2、源代码 一、引言 栈#xff0c;作为一种基础且重要的数据结构#xff0c;在计算… 文章目录 一、引言二、栈的基本概念1、栈是什么2、栈的实现方式对比3、函数栈帧 三、栈的实现1、结构体定义2、初始化3、销毁4、显示5、数据操作 四、分析栈1、优点2、缺点 五、总结1、练习题2、源代码 一、引言 栈作为一种基础且重要的数据结构在计算机科学领域中有着广泛的应用。它不仅为函数调用提供了必要的支持还在算法设计和问题解决中发挥着关键作用。本文将对栈的基本概念、实现方式以及函数栈帧进行详细的介绍和分析。 二、栈的基本概念 1、栈是什么 栈是一种特殊的线性数据结构其只允许在固定的一端进行插入和删除操作。插入和删除的这一端被称为栈顶而另一端则被称为栈底。栈遵循后进先出的原则即最后插入的元素会最先被删除。这种特性使得栈在算法设计和问题解决中具有独特的优势。 2、栈的实现方式对比 数组实现将数组的尾部充当栈顶数据的插入与删除操作变得非常高效。同时数组的结构使得其CPU高速缓存的命中率较高。唯一的缺陷就是扩容或缩容会有一定的性能开销。链表实现采用单链表结构将链表头部设为栈顶数据的插入与删除操作同样能高效完成。但链表需要额外的存储空间来保存指针信息且由于链表的结构CPU高速缓存的命中率相对较低。此外链表实现的复杂度相较于数组实现也更高一些。 3、函数栈帧 在函数调用过程中系统会为每个函数分配一个栈帧。栈帧中存储了函数的局部变量、参数以及返回地址等信息。当函数执行完毕后其栈帧会被销毁从而释放占用的栈空间。函数栈帧的分配和销毁过程体现了栈的后进先出原则。 函数栈帧的存在使得函数调用具有嵌套性即一个函数可以调用另一个函数而被调用的函数又可以继续调用其他函数。这种嵌套调用关系通过栈来维护确保了函数调用的正确性和稳定性。 三、栈的实现 1、结构体定义 首先定义了栈的数据结构。栈使用动态数组来存储元素同时记录了栈顶索引和栈的容量。 typedef int DataType; typedef struct Stack {DataType* array;int top;int capacity; }S;2、初始化 接下来实现了栈的初始化函数。该函数为栈分配内存并初始化栈顶索引和容量。 void Init(S* ps, int capacity) {assert(ps ! NULL capacity 0);DataType* pos (DataType*)malloc(sizeof(DataType) * capacity);if (pos NULL){fprintf(stderr, 内存分配失败);exit(EXIT_FAILURE);}ps-array pos;ps-capacity capacity;ps-top -1; }3、销毁 实现了栈的销毁函数。该函数释放栈所占用的内存并将栈的指针、容量和栈顶索引重置为初始状态。 void Destroy(S* ps) {if (ps NULL)return;free(ps-array);ps-array NULL;ps-capacity 0;ps-top -1; }4、显示 实现了栈的显示函数。该函数遍历栈中的元素并调用用户定义的打印函数来打印每个元素。 void Print(S* ps, void (*Prin)(DataType)) {assert(ps ! NULL);for (int i ps-top; i 0; i--){Prin(ps-array[i]);}printf(\n); }5、数据操作 void Push(S* ps, DataType data) {assert(ps ! NULL);if (ps-top ps-capacity - 1){int capacity ps-capacity 0 ? 2 : ps-capacity * 2;DataType* pos (DataType*)realloc(ps-array, sizeof(DataType) * capacity * 2);if (pos NULL){fprintf(stderr, 内存分配失败);exit(EXIT_FAILURE);}ps-array pos;ps-capacity capacity;}ps-array[(ps-top)] data; }void Pop(S* ps) {assert(ps ! NULL ps-top ! -1);if (ps-capacity 64 ps-top ps-capacity / 3){int capacity ps-capacity / 3;DataType* pos (DataType*)realloc(ps-array, sizeof(DataType) * capacity);if (pos NULL){fprintf(stderr, 内存分配失败);exit(EXIT_FAILURE);}ps-array pos;ps-capacity capacity;}ps-top--; }DataType Top(S* ps) {assert(ps ! NULL);return ps-array[ps-top]; }四、分析栈 1、优点 操作简便栈提供了简洁的接口如push入栈和pop出栈使得元素的操作非常直观和方便。高效性对于大多数栈实现push和pop操作的时间复杂度均为O(1)保证了高效的元素访问速度。应用场景广泛栈在多种算法和数据结构中都有重要应用如深度优先搜索DFS、表达式求值、括号匹配等。 2、缺点 访问限制栈只允许在栈顶进行元素的插入和删除操作无法直接访问栈内的其他元素限制了其灵活性。 五、总结 1、练习题 有效的括号最小栈用栈操作构建数组堆盘子 2、源代码 对于栈的源代码我已经开源在GItee传送门。
http://www.w-s-a.com/news/227351/

相关文章:

  • 服务器不是自己的做违法网站videopro wordpress
  • 北京建网站的公司哪个比较好网站开通告知书
  • 网站负责人 主体负责人黑龙江 建设监理协会网站
  • 手机网站焦点图代码建设工程质量检测网站
  • 墙绘做网站推广有作用没html网页制作用什么软件
  • 企业做网站有用吗网站推广的常用方法有哪些?
  • 景安做网站教程互联网小程序开发
  • 桂林北站离阳朔多远贵州省建设厅住房和城乡建设官网二建考试
  • 浙江省建设厅 网站是多少wordpress淘宝客一键
  • 网站流量少怎么做5个不好的网站
  • 随州网站建设有限公司个人申请注册公司需要多少钱
  • 东莞做商城网站建设wordpress批量下载外链图片
  • 新网站建设运营年计划书仓山区建设局招标网站
  • 网站开发天津网站建设项目组织图
  • 网站开发认证考试石家庄高端网站开发
  • 网站建设第一步怎么弄站酷网页
  • 设备网站模板江西的赣州网站建设
  • 邯郸营销型网站国际招聘人才网
  • hexo wordpress 主题织梦网站优化教程
  • 网站建设方案及上海市建设协会网站
  • 轴承外贸网站怎么做南宁网站排名优化公司哪家好
  • 沈阳企业网站建站郴州优化公司
  • cctv5+手机在线直播观看seo关键词排名优化方法
  • 网站建设公司怎么谈单怎么开通微信小程序商店
  • 深圳做网站案例一个服务器可以备案几个网站
  • 网络营销策划名词解释泉州百度推广排名优化
  • 一键生成网站的软件互联网营销师是干什么
  • 网站后台管理水印怎么做手机优化设置
  • 哪个网站做图文素材多wordpress++优化
  • 建设网站就选用什么样的公司网站类型分类有哪些