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

外网下载百度seo培训公司

外网下载,百度seo培训公司,物联网技术主要学什么,免费学编程的app1.栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。…

1.

1.1栈的概念及结构

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

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

2.栈的实现

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

1.栈的初始化

定义栈顶有两种情况:1.栈顶指向元素 2.栈顶指向元素下一个一个位置

//初始化
void STInit(ST* ps)
{assert(ps);//top指向栈顶等于栈顶下一个元素ps->top = 0;ps->a = NULL;ps->capcity = 0;//top指向栈顶的元素//ps->top=-1
}

2.栈的销毁

void StDestroy(ST* ps)//销毁
{assert(ps);ps->capcity = ps->top = 0;free(ps->a);ps->a = NULL;
}

3.入栈

void STPush(ST* ps, STDataType x)//入栈
{assert(ps);if (ps->capcity == ps->top){int newcapcity = ps->capcity = 0 ? 4 : ps->capcity * 2;STDataType* temp = (STDataType*)realloc(ps->a, newcapcity * sizeof(STDataType));if (temp == NULL){perror("realloc fail");exit(1);}ps->a = temp;ps->capcity = newcapcity;}ps->a[ps->top++] = x;
}

4.出栈

void STPop(ST* ps)//出栈
{assert(ps);assert(ps->top > 0);//return ps->a[ps->top--];ps->top--;
}

5.获取元素个数

//获取元素个数
int STSize(ST* ps)
{assert(ps);return ps->top;
}

6.获取栈顶数据

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

7.判空

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

3.完整代码

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
typedef int STDataType;
typedef struct Stack
{STDataType* a;int capcity;int top;
}ST;
//初始化和销毁
void STInit(ST* ps);
void StDestroy(ST* ps);//入栈和出栈
void STPush(ST* ps, STDataType x);
void STPop(ST* ps);//获取个数
int STSize(ST* ps);//获取栈顶数据
STDataType STTop(ST* ps);//判空
bool STEmpty(ST* ps);#include"Stcak.h"
//初始化
void STInit(ST* ps)
{assert(ps);//top指向栈顶等于栈顶下一个元素ps->top = 0;ps->a = NULL;ps->capcity = 0;//top指向栈顶的元素//ps->top=-1
}
void StDestroy(ST* ps)//销毁
{assert(ps);ps->capcity = ps->top = 0;free(ps->a);ps->a = NULL;
}
void STPush(ST* ps, STDataType x)//入栈
{assert(ps);if (ps->capcity == ps->top){int newcapcity = ps->capcity = 0 ? 4 : ps->capcity * 2;STDataType* temp = (STDataType*)realloc(ps->a, newcapcity * sizeof(STDataType));if (temp == NULL){perror("realloc fail");exit(1);}ps->a = temp;ps->capcity = newcapcity;}ps->a[ps->top++] = x;
}
void STPop(ST* ps)//出栈
{assert(ps);assert(ps->top > 0);//return ps->a[ps->top--];ps->top--;
}
//获取元素个数
int STSize(ST* ps)
{assert(ps);return ps->top;
}
//获取栈顶数据
STDataType STTop(ST* ps)
{assert(ps);assert(ps->top > 0);return ps->a[ps->top - 1];
}//判空
bool STEmpty(ST* ps)
{assert(ps);return ps->top == 0;
}#include"Stcak.h"
void test()
{ST sl;STInit(&sl);STPush(&sl, 1);STPush(&sl, 2);STPush(&sl, 3);while (!STEmpty(&sl)){printf("%d ", STTop(&sl));STPop(&sl);}
}
int main()
{test();return 0;
}

http://www.dtcms.com/wzjs/456470.html

相关文章:

  • 河南建设工程信息网官方网站哈尔滨最新疫情
  • 哪些网站做代理沈阳疫情最新消息
  • 怎么在移动端网站下面做联系人新媒体运营师证书
  • 微信开发者工具下载官网下载荆州seo推广
  • 广州做营销网站公司站长资源平台
  • 哎呦视频在线资源观看百度seo排名软
  • 中卫网站推广制作深圳优化网站方法
  • 周浦手机网站策划建设公司站长工具seo源码
  • qq网页版登录官网登录成都官网seo费用
  • 做网站可以不做后端吗什么是网络营销推广
  • 萝岗手机网站建设互联网营销师资格证
  • 网站建设电话销售不被挂断网站查询平台
  • 上海 网站设计公司个人网站seo
  • 公司官方网站开发googleseo服务公司
  • 仪征做网站aicjoy网络营销课程总结1500字
  • 公司设计网站需要包含什么资料网站推广的基本方法是
  • 在大学做网站新闻摘抄2022最新5篇
  • 网站建设程序开发网络营销的特点主要包括什么
  • 服务类网站怎么做培训心得
  • 做四级题目的网站营销型网站建设要点
  • 北京网站维护浩森宇特北京网站制作
  • 网站建设域名注册熊掌号北京搜索排名优化
  • 网站设计制作开发公司国际实时新闻
  • 专门做油站数据的网站广州seo网站公司
  • 国家工商注册网整站优化和关键词优化的区别
  • 软件源码购买一般在哪个网站极速一区二区三区精品
  • 阿里网站年费怎么做分录网络推广app是违法的吗
  • 企业网站和域名的好处百度搜索浏览器
  • 建设英文商城网站公司做网络推广怎么做
  • 企业邮箱查询网站营销app