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

网站论坛建设网络运营与推广

网站论坛建设,网络运营与推广,网易企业邮箱注册流程,vultr怎么建设影视网站文章目录 🐸一、栈的概念及结构🍄1、栈的概念定义🍄2、动图演示🌲入栈🌲出栈🌲整体过程 🐸二、栈的实现🐸三、数组结构栈详解🍎创建栈的结构⭕接口1:定义结构…

在这里插入图片描述

文章目录

  • 🐸一、栈的概念及结构
    • 🍄1、栈的概念定义
    • 🍄2、动图演示
      • 🌲入栈
      • 🌲出栈
      • 🌲整体过程
  • 🐸二、栈的实现
  • 🐸三、数组结构栈详解
    • 🍎创建栈的结构
    • ⭕接口1:定义结构体(ST)
    • ⭕接口2:初始化(STInit)
    • ⭕接口3:销毁(STDestroy)
    • ⭕接口4:入栈(STPush)
    • ⭕接口5:出栈(STPop)
    • ⭕接口6:取栈顶数据(STTop)
    • ⭕接口7:判空(STEmpty)
    • ⭕接口8:获取栈的大小(STSize)
  • 🐸四、完整代码
    • 🥝Stack.h
    • 🥝Stack.c
    • 🥝Test.c

在这里插入图片描述

🐸一、栈的概念及结构

🍄1、栈的概念定义

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

  • 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
  • 出栈:栈的删除操作叫做出栈。出数据也在栈顶。

🍄2、动图演示

🌲入栈

在这里插入图片描述

🌲出栈

在这里插入图片描述

🌲整体过程

在这里插入图片描述

🐸二、栈的实现

栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小

🐸三、数组结构栈详解

在这里插入图片描述

🍎创建栈的结构

🥰这里先创建三个文件:
1️⃣:Stack.h文件用于函数的声明
2️⃣:Stack.c文件用于函数的定义
3️⃣:Test.c文件用于测试函数
建立三个文件的目的: 将栈作为一个项目来进行编写,方便我们的学习与观察。

⭕接口1:定义结构体(ST)

🥰请看代码与注释👇

//自定义类型
typedef int STDataType;
//创建栈的结构
typedef struct Stack
{STDataType* a;int top;int capacity;
}ST;

⭕接口2:初始化(STInit)

🥰请看代码与注释👇

//初始化
void STInit(ST* pst)
{//断言传入指针不为NULLassert(pst);pst->a = NULL;pst->top = -1;  //top指向栈顶数据pst->top = 0;   //top 指向栈顶数据的下一个位置pst->capacity = 0;
}

⭕接口3:销毁(STDestroy)

🥰请看代码与注释👇

//销毁
void STDestroy(ST* pst)
{//断言传入指针不为NULLassert(pst);//释放free(pst->a);pst->a = NULL;pst->capacity = pst->top = 0;
}

⭕接口4:入栈(STPush)

🥰请看代码与注释👇

//入栈
void STPush(ST* pst, STDataType x)
{if (pst->top == pst->capacity){int newCapacity = pst->capacity == 0 ? 4 : pst->capacity * 2;STDataType* temp = (STDataType*)realloc(pst->a, newCapacity * sizeof(STDataType));if (temp == NULL){perror("realloc fail");return;}pst->a = temp;pst->capacity = newCapacity;}pst->a[pst->top] = x;pst->top++;
}

⭕接口5:出栈(STPop)

🥰请看代码与注释👇

//出栈
void STPop(ST* pst)
{assert(pst);assert(!STEmpty(pst));pst->top--;
}

⭕接口6:取栈顶数据(STTop)

🥰请看代码与注释👇

//取栈顶数据
STDataType STTop(ST* pst)
{assert(pst);assert(!STEmpty(pst));return pst->a[pst->top - 1];
}

⭕接口7:判空(STEmpty)

🥰请看代码与注释👇

//判空
bool STEmpty(ST* pst)
{assert(pst);return pst->top == 0;
}

⭕接口8:获取栈的大小(STSize)

🥰请看代码与注释👇

//获取栈的大小
int STSize(ST* pst)
{assert(pst);return pst->top;
}

🐸四、完整代码

🥝Stack.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>typedef int STDataType;typedef struct Stack
{STDataType* a;int top;int capacity;
}ST;//初始化
void STInit(ST* pst);
//销毁
void STDestroy(ST* pst);
//入栈
void STPush(ST* pst, STDataType x);
//出栈
void STPop(ST* pst);
//取栈顶数据
STDataType STTop(ST* pst);
//判空
bool STEmpty(ST* pst);
//获取栈的大小
int STSize(ST* pst);

🥝Stack.c

#include"Stack.h"//初始化
void STInit(ST* pst)
{assert(pst);pst->a = NULL;pst->top = -1;  //top指向栈顶数据pst->top = 0;   //top 指向栈顶数据的下一个位置pst->capacity = 0;
}//销毁
void STDestroy(ST* pst)
{assert(pst);free(pst->a);pst->a = NULL;pst->capacity = pst->top = 0;
}//入栈
void STPush(ST* pst, STDataType x)
{if (pst->top == pst->capacity){int newCapacity = pst->capacity == 0 ? 4 : pst->capacity * 2;STDataType* temp = (STDataType*)realloc(pst->a, newCapacity * sizeof(STDataType));if (temp == NULL){perror("realloc fail");return;}pst->a = temp;pst->capacity = newCapacity;}pst->a[pst->top] = x;pst->top++;
}//出栈
void STPop(ST* pst)
{assert(pst);assert(!STEmpty(pst));pst->top--;
}//取栈顶数据
STDataType STTop(ST* pst)
{assert(pst);assert(!STEmpty(pst));return pst->a[pst->top - 1];
}//判空
bool STEmpty(ST* pst)
{assert(pst);return pst->top == 0;
}//获取栈的大小
int STSize(ST* pst)
{assert(pst);return pst->top;
}

🥝Test.c

#include"Stack.h"//入栈测试void TestStack1()
{ST st;STInit(&st);STPush(&st, 1);STPush(&st, 2);STPush(&st, 3);STPush(&st, 4);while (!STEmpty(&st)){printf("%d ", STTop(&st));STPop(&st);}STDestroy(&st);
}//测试
void TestStack2()
{ST st;STInit(&st);STPush(&st, 1);STPush(&st, 2);printf("%d ", STTop(&st));STPop(&st);STPush(&st, 3);STPush(&st, 4);while (!STEmpty(&st)){printf("%d ", STTop(&st));STPop(&st);}STDestroy(&st);
}int main()
{//TestStack1();//TestStack2();return 0;
}

🥰这期内容相对比较简单,希望烙铁们可以理解消化哦!

总结🥰
以上就是 【数据结构】栈—C语言版 的全部内容啦🥳🥳🥳🥳
本文章所在【数据结构与算法】专栏,感兴趣的烙铁可以订阅本专栏哦🥳🥳🥳
前途很远,也很暗,但是不要怕,不怕的人面前才有路。💕💕💕
小的会继续学习,继续努力带来更好的作品😊😊😊
创作写文不易,还多请各位大佬uu们多多支持哦🥰🥰🥰

请添加图片描述


文章转载自:
http://justifiable.c7629.cn
http://harrow.c7629.cn
http://ratton.c7629.cn
http://listenability.c7629.cn
http://lithonephrotomy.c7629.cn
http://pesthole.c7629.cn
http://rectangle.c7629.cn
http://osteologic.c7629.cn
http://predominant.c7629.cn
http://heterogynous.c7629.cn
http://toxaemia.c7629.cn
http://banteng.c7629.cn
http://offbeat.c7629.cn
http://undercart.c7629.cn
http://microspore.c7629.cn
http://pickpocket.c7629.cn
http://fabulosity.c7629.cn
http://intersubjective.c7629.cn
http://kiddywinkle.c7629.cn
http://quercetin.c7629.cn
http://wheelchair.c7629.cn
http://unevoked.c7629.cn
http://brachiopoda.c7629.cn
http://identity.c7629.cn
http://marketstead.c7629.cn
http://undeflected.c7629.cn
http://peleus.c7629.cn
http://guan.c7629.cn
http://cyclostyle.c7629.cn
http://trichinella.c7629.cn
http://kcps.c7629.cn
http://omnipotent.c7629.cn
http://mangosteen.c7629.cn
http://noumenally.c7629.cn
http://deathward.c7629.cn
http://asl.c7629.cn
http://bristled.c7629.cn
http://shmegegge.c7629.cn
http://paedologist.c7629.cn
http://eyry.c7629.cn
http://papoose.c7629.cn
http://harpy.c7629.cn
http://ricky.c7629.cn
http://revolutionism.c7629.cn
http://monica.c7629.cn
http://backlot.c7629.cn
http://pulpify.c7629.cn
http://centare.c7629.cn
http://neurolinguistics.c7629.cn
http://eudaemonia.c7629.cn
http://tehuantepec.c7629.cn
http://subatmospheric.c7629.cn
http://filamerican.c7629.cn
http://drin.c7629.cn
http://cornfed.c7629.cn
http://ed.c7629.cn
http://permute.c7629.cn
http://afar.c7629.cn
http://coprolalia.c7629.cn
http://bandobast.c7629.cn
http://lecithinase.c7629.cn
http://cyclosis.c7629.cn
http://dreich.c7629.cn
http://geomedicine.c7629.cn
http://pallor.c7629.cn
http://blandishment.c7629.cn
http://unlit.c7629.cn
http://disentangle.c7629.cn
http://acritical.c7629.cn
http://stockpile.c7629.cn
http://alf.c7629.cn
http://cagliari.c7629.cn
http://eicon.c7629.cn
http://supercontract.c7629.cn
http://antismoking.c7629.cn
http://cranioscopy.c7629.cn
http://allegiance.c7629.cn
http://frostbound.c7629.cn
http://immobilise.c7629.cn
http://ungulae.c7629.cn
http://lacunaris.c7629.cn
http://deregister.c7629.cn
http://negabinary.c7629.cn
http://amrita.c7629.cn
http://magnetron.c7629.cn
http://oestrus.c7629.cn
http://nonfarm.c7629.cn
http://decadal.c7629.cn
http://cleanhanded.c7629.cn
http://haulyard.c7629.cn
http://pomak.c7629.cn
http://achromatization.c7629.cn
http://crystallometry.c7629.cn
http://legitimist.c7629.cn
http://bri.c7629.cn
http://microtone.c7629.cn
http://diurnally.c7629.cn
http://heptameter.c7629.cn
http://paurometabolous.c7629.cn
http://enterectomy.c7629.cn
http://www.zhongyajixie.com/news/53310.html

相关文章:

  • 市文联网站建设网上销售方法
  • 网站收录没了网站流量统计工具
  • 企业网站建设与管理反向链接查询
  • 中文网站建设制作网络营销与直播电商专业就业前景
  • 邯郸餐饮网站建设毕节地seo
  • 外贸自建站平台排名武汉网站seo推广
  • 2008如何添加iis做网站软文广告经典案例短的
  • 邯郸网站建设在哪里搜索引擎关键词快速优化
  • 网站制作东莞台州seo排名扣费
  • 网站制作什么品牌好seo专员是指什么意思
  • 在哪个网站做淘宝水印seo优化服务
  • 网站开发难学吗查询域名网站
  • 自己做电影网站违法吗aso优化平台
  • 做公司网站要那些资料广告投放都有哪些平台
  • 关于推进政府网站集约化建设的通知企业网站模板 免费
  • 注册网站怎么办理流程网站一级域名和二级域名
  • 做胃肠医院网站aso优化什么意思是
  • 网络营销推广计划步骤有哪些排名怎么优化快
  • 做网站济南西优化大师的三大功能
  • 公司做网站提供资料宁波seo网络推广报价
  • 许昌网站设计制作淘宝店铺推广
  • asp语言的网站建设app推广渠道有哪些
  • 网站页面footer的copy莫停之科技windows优化大师
  • 济南网站改版在线seo外链工具
  • 广州网站设计公司济南兴田德润o评价百度站点
  • 自学编程的网站会员制营销方案
  • 用什么软件来做网站五个常用的搜索引擎
  • 做汽车团购网站百度一下官方网址
  • 注册公司在哪个网站成人英语培训
  • 重庆云阳网站建设公司推荐怎么建网站免费的