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

合肥网站推广公司排名厦门软件外包公司

合肥网站推广公司排名,厦门软件外包公司,百度网页打不开无法访问怎么办,江西省工程造价信息网官网栈 栈的理解 咱们先不管栈的数据结构什么,先了解栈是什么,栈就像一个桶一样,你先放进去的东西,被后放进的的东西压着,那么就需要把后放进行的东西拿出才能拿出来先放进去的东西,如图1,就像图1中…

       栈的理解

        咱们先不管栈的数据结构什么,先了解栈是什么,栈就像一个桶一样,你先放进去的东西,被后放进的的东西压着,那么就需要把后放进行的东西拿出才能拿出来先放进去的东西,如图1,就像图1中样子:

 图1

        图1中如果你需要拿书本1那么就要先将,书本432按照这个顺序拿出来,才能拿到书本1,如果拿书本4那么就可以直接拿到,这就是栈的一个性质,所以栈的专业名称就叫:FILO(first in last out),翻译后就是先进后出;

      栈的数据结构:

        物理结构:

        和队列一样,有一个存储数据的数据域,这里用的是数组,然后是一个栈顶指针,栈顶指针指向栈顶元素,还有栈的大小;

        用结构体封装后,代码实现如下:

        

typedef struct stack {//栈的结构定义int top, size;//分别是栈顶指针,栈的大小void *data;//数据域
} stack;

        逻辑结构:

        先进后出,后进先出,需要维护的性质,不能破坏这个性质;

      结构操作

        来看栈是如何对里面的数据如何出栈和入栈的;

        入栈:

        如图现在是栈的情况,里面有元素1234:

         

        现在对元素5进行入栈,top指针先往上偏移:

        

        然后元素5入栈:

         

         最后完成入栈;

         出栈:

         直接对于上面的完成入栈元素5的情况开始出栈,出栈元素4: 

         直接将指针,偏移两步,到指针指向元素3,然后元素5,元素4按照顺序出栈:

        最终元素4,5都出栈:

         

        看完了图片的展示,下面开始代码实现: 

        

#include <stdio.h>
#include <stdlib.h>
#include <time.h>typedef struct stack {//栈的结构定义int top, size;//分别是栈顶指针,栈的大小int *data;//数据域
} stack;stack *init(int n) {//向计算机借空间,然栈里面有空间可以存值stack *s = (stack *)malloc(sizeof(stack));s->data = (int *)malloc(sizeof(int) * n);s->top = -1;s->size = n;return s;
}int empty(stack *s) {//判短栈是否为空return s->top == -1;
}int top(stack *s) {//获取栈顶元素if (empty(s)) return -1;return s->data[s->top];
}int push(stack *s, int val) {//入栈元素if (s->top == s->size - 1) return 0;s->data[++(s->top)] = val;s->size++;return 1;
}int pop(stack *s) {//出栈元素if (empty(s)) return 0;s->top--;s->size--;return 1;
}void clear(stack *s) {//借了计算机的还回去if (!s) return ;free(s->data);free(s);return ;
}void output(stack *s) {//打印栈里的元素printf("stack(%d) = [", s->size);for (int i = s->top; i >= 0; i--) {i != s->top && printf(" ");printf("%d", s->data[i]);}printf("]\n");return ;
}int main() {//测试srand(time(0));stack *s = init(20);int op, val;for (int i = 0; i < 20; i++) {op = rand() % 4;val = rand() % 100;switch (op) {case 0:case 1:case 2: {printf("%d push in stack is %d\n", val, push(s, val));   } break;case 3: {int top_number = top(s);printf("%d pop in stack is %d\n", top_number, pop(s));} break;}output(s);}clear(s);return 0;
}
http://www.yayakq.cn/news/628067/

相关文章:

  • 维护网站英语seo如何选择网站标题
  • 网站建设的界面风格有哪些有关建筑网站建设方案
  • 网站站内logo怎么做太原做网站的公司
  • 淮南网站建设济南优化推广网站seo
  • 网站建设论文题目百度爱采购网站官网
  • 苏州营销网站建设公司第三方做公司网站
  • 网站制作思路网站使用mip后效果怎么样
  • 网站加首页wordpress空白页面
  • 建一个网站花多少钱防水网站的外链如何找
  • 中国建设报社门户网站网站推广代理
  • seo网站推广计划舆情报告
  • 做服装的一般去什么网站找图片大公司做网站的优势
  • 汕头专业的免费建站网络营销效果评估
  • 深圳网站制作比较好公司上海室内设计工作室排名
  • 网站 建设文档怎样做违法网站
  • 外网vp(永久免费)加速器下载优质的seo快速排名优化
  • 成品软件网站推荐网站开发的相关语言有哪些
  • 帝国cms更改网站ico郴州seo外包
  • 福州网站建设公司哪个好什么是互联网推广
  • 公司网站怎么建设网站后台 栏目管理
  • 广州营销网站建设设计网站搜索排名优化价格
  • 北京专业做网站推广wordpress手机编辑器插件
  • 学徒制下的课程网站建设互联网排行榜
  • 啤酒网站建设制造网站建设
  • 桂林象鼻山要门票吗dede网站优化
  • 怎样申请网站域名网站收录突然全部没有了
  • 徐州网络科技有限公司seo指的是什么意思
  • 罗山网站建设甘肃省住房和城乡建设局网站
  • 猎头公司人才招聘重庆网站seo方法
  • 帮客户做网站平台犯法吗北京建站者公司