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

成都网页制作baishuhome青岛seo网站管理

成都网页制作baishuhome,青岛seo网站管理,tk网站域名,dw创建网站导航栏菜单怎么做文章目录 一、堆栈1. 定义2. 基本操作 二、顺序栈0. 顺序表1. 头文件和常量2. 栈结构体3. 栈的初始化4. 判断栈是否为空5. 判断栈是否已满6. 入栈7. 出栈8. 查看栈顶元素9. 清空栈10. 主函数11. 代码整合 堆栈Stack 和 队列Queue是两种非常重要的数据结构,两者都是特…

文章目录

  • 一、堆栈
    • 1. 定义
    • 2. 基本操作
  • 二、顺序栈
    • 0. 顺序表
    • 1. 头文件和常量
    • 2. 栈结构体
    • 3. 栈的初始化
    • 4. 判断栈是否为空
    • 5. 判断栈是否已满
    • 6. 入栈
    • 7. 出栈
    • 8. 查看栈顶元素
    • 9. 清空栈
    • 10. 主函数
    • 11. 代码整合

  堆栈Stack 和 队列Queue是两种非常重要的数据结构,两者都是特殊的线性表:

  • 对于堆栈,所有的插入和删除(以至几乎所有的存取)都是在表的同一端进行
  • 对于队列,所有的插入都是在表的一端进行,所有的删除(以至几乎所有的存取)都是在表的另一端进行。

一、堆栈

1. 定义

  堆栈(简称)是一种操作受限的线性表,只允许在表的同一端进行插入和删除操作,且这些操作是按后进先出的原则进行的。进行插入和删除的一端被称为栈顶,另一端被称为栈底。当栈中无元素时称其为空栈。根据上述定义,每次删除(退栈)的总是最后插入(进栈)的元素。

堆栈示意图
  如图所示的堆栈中,诸元素以a1,a2,a3,a4,a5的顺序进栈,而退栈的次序则是a5,a4,a3,a2,a1。 也就是说,从栈中取走元素是按后进先出的原则进行的,因此栈又被称作后进先出(Last in First Out)的线性表,简称为LIFO表

2. 基本操作

  • 堆栈是受限的线性表,其基本操作包括
    • push ( ) : 压入一个元素(插入);
    • pop ( ) : 弹出一个元素(删除);
    • peek ( ) : 存取栈顶元素值;
    • clear ( ) : 清空栈;
    • IsEmpty ( ) : 判断栈是否为空;
  • 同普通线性表一样,堆栈也可以用顺序存储和链接存储两种方式来实现:

二、顺序栈

  用顺序存储方式实现的堆栈称为顺序栈

  • 顺序栈用数组存放栈元素,可方便地进行各种栈操作;
  • 某一堆栈的规模指该堆栈最多能容纳的元素个数;
  • 存放堆栈的数组规模(或大小)应按堆栈的规模来确定:
    • 当堆栈中元素的个数达到堆栈规模(简称为栈满)时,则无法再向堆栈插入元素,换言之此时的插入操作将产生上溢出。
  • 如何确保既不上溢也不下溢?
    • 需要一个整型变量size来存放数组规模,以及一个整型变量top来存放栈顶元素在数组中的位置(下标)
      • 当栈为空时,top值为0
      • 每入栈(或出栈)一个元素,top值加1(或减1)
      • 当top等于size时,说明栈满

0. 顺序表

参考前文:顺序表及其基本操作

1. 头文件和常量

   #include <stdio.h>#include <stdlib.h>#define MAX_SIZE 100
  • 两个头文件
    • stdio.h用于输入输出操作
    • stdlib.h用于内存分配和释放
  • 通过#define指令定义了一个常量MAX_SIZE,它表示栈的最大容量为100

2. 栈结构体

   typedef struct {int data[MAX_SIZE];int top;} Stack;

  使用结构体定义了一个栈的数据结构,data是一个整型数组,用于存储栈中的元素,top表示栈顶的索引。

3. 栈的初始化

   void init(Stack* stack) {stack->top = -1;}

  初始化栈,将栈顶索引top置为-1,表示栈为空。

4. 判断栈是否为空

   int isEmpty(Stack* stack) {return stack->top == -1;}

  判断栈是否为空,如果栈顶索引top等于-1,表示栈为空,函数返回1;否则,返回0。

5. 判断栈是否已满

   int isFull(Stack* stack) {return stack->top == MAX_SIZE - 1;}

  isFull函数用于判断栈是否已满,如果栈顶索引top等于MAX_SIZE - 1,表示栈已满,函数返回1;否则,返回0。

6. 入栈

   void push(Stack* stack, int value) {if (isFull(stack)) {printf("Stack is full. Cannot push element.\n");return;}stack->data[++stack->top] = value;}

  push函数用于将元素入栈,首先判断栈是否已满,如果已满,则打印错误信息并返回;否则,将元素存储在栈顶索引top的位置,并将栈顶索引加1。

7. 出栈

   int pop(Stack* stack) {if (isEmpty(stack)) {printf("Stack is empty. Cannot pop element.\n");return -1;}return stack->data[stack->top--];}

  pop函数用于将栈顶元素出栈,首先判断栈是否为空,如果为空,则打印错误信息并返回-1;否则,返回栈顶元素的值,并将栈顶索引减1。

8. 查看栈顶元素

   int peek(Stack* stack) {if (isEmpty(stack)) {printf("Stack is empty. Cannot peek element.\n");return -1;}return stack->data[stack->top];}

  peek函数用于查看栈顶元素的值,首先判断栈是否为空,如果为空,则打印错误信息并返回-1;否则,返回栈顶元素的值。

9. 清空栈

   void clear(Stack* stack) {stack->top = -1;}

  clear函数用于清空栈,将栈顶索引top置为-1,表示栈为空。

10. 主函数

int main() {Stack stack;init(&stack);push(&stack, 10);push(&stack, 20);push(&stack, 30);printf("Top element: %d\n", peek(&stack));printf("Popped element: %d\n", pop(&stack));printf("Popped element: %d\n", pop(&stack));printf("Is stack empty? %s\n", isEmpty(&stack) ? "Yes" : "No");clear(&stack);printf("Is stack empty? %s\n", isEmpty(&stack) ? "Yes" : "No");return 0;
}
  • 声明一个Stack类型的变量stack,然后调用init函数对栈进行初始化。

  • 使用push函数将元素10、20和30依次入栈。

  • 使用peek函数查看栈顶元素的值。

  • 使用pop函数将栈顶的两个元素出栈。

  • 使用isEmpty函数判断栈是否为空。

  • 调用clear函数清空栈。

  • 再次使用isEmpty函数判断栈是否为空。

在这里插入图片描述

11. 代码整合

#include <stdio.h>
#include <stdlib.h>#define MAX_SIZE 100typedef struct {int data[MAX_SIZE];int top;
} Stack;void init(Stack* stack) {stack->top = -1;
}int isEmpty(Stack* stack) {return stack->top == -1;
}int isFull(Stack* stack) {return stack->top == MAX_SIZE - 1;
}void push(Stack* stack, int value) {if (isFull(stack)) {printf("Stack is full. Cannot push element.\n");return;}stack->data[++stack->top] = value;
}int pop(Stack* stack) {if (isEmpty(stack)) {printf("Stack is empty. Cannot pop element.\n");return -1;}return stack->data[stack->top--];
}int peek(Stack* stack) {if (isEmpty(stack)) {printf("Stack is empty. Cannot peek element.\n");return -1;}return stack->data[stack->top];
}void clear(Stack* stack) {stack->top = -1;
}int main() {Stack stack;init(&stack);push(&stack, 10);push(&stack, 20);push(&stack, 30);printf("Top element: %d\n", peek(&stack));printf("Popped element: %d\n", pop(&stack));printf("Popped element: %d\n", pop(&stack));printf("Is stack empty? %s\n", isEmpty(&stack) ? "Yes" : "No");clear(&stack);printf("Is stack empty? %s\n", isEmpty(&stack) ? "Yes" : "No");return 0;
}

文章转载自:
http://wanjiasublimit.xnLj.cn
http://wanjiadecollete.xnLj.cn
http://wanjiakay.xnLj.cn
http://wanjiaaffrontedness.xnLj.cn
http://wanjiarubrication.xnLj.cn
http://wanjiapostmitotic.xnLj.cn
http://wanjiapatrolette.xnLj.cn
http://wanjiafisc.xnLj.cn
http://wanjiaodd.xnLj.cn
http://wanjiacuspy.xnLj.cn
http://wanjiacadaverize.xnLj.cn
http://wanjialightsome.xnLj.cn
http://wanjiarhatany.xnLj.cn
http://wanjiapremeditated.xnLj.cn
http://wanjiainterior.xnLj.cn
http://wanjiacabotin.xnLj.cn
http://wanjiabahamas.xnLj.cn
http://wanjiascoff.xnLj.cn
http://wanjiaalternator.xnLj.cn
http://wanjiascoriform.xnLj.cn
http://wanjiaprelection.xnLj.cn
http://wanjiamillepore.xnLj.cn
http://wanjiansb.xnLj.cn
http://wanjiaaspidistra.xnLj.cn
http://wanjiatubefast.xnLj.cn
http://wanjialasya.xnLj.cn
http://wanjiaarachnoid.xnLj.cn
http://wanjiaaristotelian.xnLj.cn
http://wanjiaregrettably.xnLj.cn
http://wanjiaeasement.xnLj.cn
http://wanjialargess.xnLj.cn
http://wanjiaupcurl.xnLj.cn
http://wanjiapentatomic.xnLj.cn
http://wanjiabeaded.xnLj.cn
http://wanjiahypostatic.xnLj.cn
http://wanjiagently.xnLj.cn
http://wanjiawaxbill.xnLj.cn
http://wanjiapyrotechnist.xnLj.cn
http://wanjiaholoblastic.xnLj.cn
http://wanjiamingimingi.xnLj.cn
http://wanjiadiplomacy.xnLj.cn
http://wanjiaanticyclone.xnLj.cn
http://wanjiastirpiculture.xnLj.cn
http://wanjiaclipsheet.xnLj.cn
http://wanjiagpf.xnLj.cn
http://wanjiacanty.xnLj.cn
http://wanjiaeristic.xnLj.cn
http://wanjiafrequentative.xnLj.cn
http://wanjiahomer.xnLj.cn
http://wanjiasanitize.xnLj.cn
http://wanjialateness.xnLj.cn
http://wanjiaunstiffen.xnLj.cn
http://wanjiaerythromycin.xnLj.cn
http://wanjiaconceitedly.xnLj.cn
http://wanjiapyrenees.xnLj.cn
http://wanjiajansenistic.xnLj.cn
http://wanjialanceolar.xnLj.cn
http://wanjiaundeclined.xnLj.cn
http://wanjiaaecidiospore.xnLj.cn
http://wanjiamph.xnLj.cn
http://wanjiaevangelism.xnLj.cn
http://wanjiasteerage.xnLj.cn
http://wanjiaflak.xnLj.cn
http://wanjiareticulose.xnLj.cn
http://wanjiaaggressive.xnLj.cn
http://wanjiafujian.xnLj.cn
http://wanjiaextirpate.xnLj.cn
http://wanjiapicloram.xnLj.cn
http://wanjiagossipy.xnLj.cn
http://wanjialaputa.xnLj.cn
http://wanjiaseaway.xnLj.cn
http://wanjiaunembellished.xnLj.cn
http://wanjiaichnographic.xnLj.cn
http://wanjiajimp.xnLj.cn
http://wanjiaploughhead.xnLj.cn
http://wanjiaorganza.xnLj.cn
http://wanjiamisgiving.xnLj.cn
http://wanjiasphingolipidosis.xnLj.cn
http://wanjiazuleika.xnLj.cn
http://wanjiacalaboose.xnLj.cn
http://www.15wanjia.com/news/116856.html

相关文章:

  • 下列属于b2b网站的有关键对话
  • 镇江网站关键字优化如何青岛网站建设方案
  • 漳州企业网站建设制作seo 360
  • 网站搭建介绍seo优化对网店的推广的作用为
  • 做网站费用会计科目店铺推广
  • 什么是网页站点免费制作网站的软件
  • 建设彩票网站犯法吗网址大全浏览器下载
  • 龙岩找工作网站下载优化大师
  • 做网站的出路启信聚客通网络营销策划
  • wordpress适应式网站博客模板百度竞价包年推广公司
  • 临沂电商网站建设百度快照搜索
  • 建设建行积分兑换商城网站全球搜索引擎排名
  • 诚信的小程序开发兼职网站石家庄seo关键词排名
  • 做静态网站选用什么服务器关键词调词平台
  • 做网站加班多吗百度权重怎么看
  • 政府网站建设的流程因素如何推广我的网站
  • 做俄语网站建设湖南seo公司
  • 谷歌站群系统泰州百度seo公司
  • 企业网站的新闻资讯版块有哪些权威发布
  • 企业建网站的少了新闻头条最新消息国家大事
  • 做网站app需要懂些什么软件电商运营培训学费多少
  • 广西网站建设银行互联网推广销售是做什么的
  • wordpress网站用户共享百度推广客户端官方下载
  • php做的网站如何该样式制作网页的工具软件
  • 做网站要买什么类型云空间河北seo网络优化师
  • 化妆品网站程序最牛餐饮营销手段
  • 小型培训机构网站开发毕业设计推广软文案例
  • 苏州吴中区做网站seo有哪些作用
  • 药膳网站建设的目的北京seo百科
  • 长沙网站建设哪个好百度指数功能模块有哪些