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

经典的企业网站有道云笔记 wordpress

经典的企业网站,有道云笔记 wordpress,做图片推广的网站有哪些,wordpress注册跳转目录 顺序栈 结构 初始化一个空顺序栈 压栈 出栈 例子 十进制转八进制 链式栈 管理结构体的定义 初始化 压栈 出栈 顺序栈 顺序栈的实现#xff0c;主要就是定义一块连续的内存来存放这些栈元素#xff0c;同时为了方便管理#xff0c; 再定义一个整数变量来代表…目录 顺序栈 结构 初始化一个空顺序栈 压栈 出栈 例子 十进制转八进制 链式栈 管理结构体的定义 初始化 压栈 出栈 顺序栈 顺序栈的实现主要就是定义一块连续的内存来存放这些栈元素同时为了方便管理 再定义一个整数变量来代表当前栈顶元素在此连续内存中的偏移量这样就可以很方便地知 道栈的状态和当前栈顶元素的位置便于压栈和出栈操作。将栈内存地址和栈顶元素偏移量 放在一起形成一个专门用来管理顺序栈的结构体我们称之为管理结构体 结构 struct sequent_stack // 栈的管理结构体 {int *stack; // 用 stack 指向一块连续的内存来存储栈元素int size; // size 保存了该顺序栈的总大小int top; // 用 top 来指示栈顶元素的偏移量 }; 初始化一个空顺序栈 一个空栈意味着栈中 没有元素首先将 stack 指向的内存清零其次更重要的是将 top 置为-1同时规定-1 为 空栈的标志这么做的好处是将来压栈第一个元素之后立即将 top 加 1 就会得到 0 而第一个元素就放在 stack 所指向的内存的开端处偏移量刚好为 0 struct sequent_stack *init_stack(int size) // 参数 size 表明空栈的初始大小 {struct sequent_stack *s;s malloc(sizeof(struct seqent_stack)); // 申请栈管理结构体if(s ! NULL){s-stack calloc(size, sizeof(int)); // 申请栈空间并由 stack 指向s-size size;s-top -1; // 将栈顶偏移量置为-1代表空栈}return s; } 压栈 假设栈中已有一些元素压栈的第一步首先要判 断栈是否已满如果已满就要考虑扩充栈空间或者直接出错返回如果未满则需要将新的 栈顶元素堆叠到原栈顶之上 bool stack_full(struct sequent_stack *s) {return s-top s-size-1; // 判断栈是否已满 } bool push(struct sequent_stack *s, int data) {if(stack_full(s)) // 如果栈已满则出错返回return false;s-top;s-stack[s-top] data;return true; } 出栈 出栈之前需要判断栈是否为空 bool stack_empty(struct sequent_stack *s) {return s-top -1; // 判断栈是否为空 } bool pop(struct sequent_stack *s, int *p) // p 指向存放栈顶元素的内存 {if(stack_empty(s)) // 如果栈为空则出错返回return false;*p s-stack[s-top];s-top--;return true; } 例子 十进制转八进制 int main(void) {struct sequent_stack *s;s init_stack(10); // 初始化一个具有 10 个元素空间的顺序栈int n;scanf(%d, n); // 让用户输入一个需要转换的十进制数while(n 0){push(s, n%8); // 使用短除法将余数统统压栈n / 8;}int m;while(!stack_empty(s)) // 只要栈不为空就继续循环{pop(s, m); // 出栈并打印出来printf(%d, m);}printf(\n);return 0; }链式栈 对于链式栈而言同样也需要一系列基本操作初始化、压栈、出栈、判断是否为空、 判断是否已满等等。首先初始化一个空栈意味着使得 top 指向 NULL而 size 记为 0 管理结构体的定义 struct node // 栈节点结构体 {int data;struct node *next; }; struct linked_stack // 栈管理结构体 {struct node *top;int size; }; 初始化 struct linked_stack *init_stack(void) {struct linked_stack *s;s malloc(sizeof(struct linked_stack)); // 申请一个管理结构体if(s ! NULL){s-top NULL; // j 将栈置空s-size 0;}return s; } 压栈 压栈首先需要一个新节点然后 将新的节点的 next 指针指向原来的栈顶再让 top 指针指向该新的栈顶元素即可 创建新结点 struct node *new_node(int data) // 创建一个新的节点 {struct node *new;new malloc(sizeof(struct node));if(new ! NULL){new-data data;new-next NULL;}return new; } 将新节点 new 压栈 bool push(struct linked_stack *s, struct node *new) // 将新节点 new 压栈 {if(s NULL || new NULL)return false;new-next s-top; // 第①步见上图s-top new; // 第②步s-size;return true; } 出栈 对于出栈来说首先要判断栈是否为空如果不为空则先要用一个指针 tmp 来保存 原栈顶元素的地址然后返回栈顶元素再将 top 指针指向下一个元素最后要注意释放 tmp 所指向的原栈顶元素的内存空间 bool pop(struct linked_stack *s, int *p) {if(s NULL || p NULL || stack_empty(s))return false;struct node *tmp s-top; // 第①步*p tmp-data; // 第②步s-top s-top-next; // 第③步free(tmp); // 第④步s-size--;return true; }
http://www.pierceye.com/news/64113/

相关文章:

  • 网站建设流程图片淘宝网站制作多少钱
  • 沧州海外网站建设炫酷网页html代码
  • 内江规划建设教育网站上海网站备案核验
  • 湖南网站建设哪里好四川成都现在可以去吗
  • 做刷票的网站中国核工业第五建设有限公司简介
  • 网站页面策划软件做课件最好的素材网站
  • 查网站域名备案上海广告网站建设
  • 温州网站建设培训学校wordpress如何下载
  • 长沙 网站优化在线设计平台的用户群分析
  • 网站开发 项目的招标文件纯色涂料网站建设
  • mvc4 做网站国家建设信息公示平台
  • 增城住房和城乡建设局网站百度广告安装入口
  • 网站接入商网店设计教程
  • 网站建设与网页设计实践报告hao123网址大全浏览器设为主页
  • 汽车销售服务东莞网站建设网站数据库建设方案
  • 网站备案的幕布尺寸免费制作网站app
  • 给个人建网站的公司网站建设怎么好
  • wordpress新闻视频站企业网站建设合同模板
  • 旌阳移动网站建设做电影网站如何买版权
  • 网站设计导航潍坊网站外包
  • 关键词搜索工具爱站网什么样的网站才是好网站
  • 个人网站可以做推广不内容营销策略分析
  • 网站建设课结课感受网站建设下单源码
  • 大兴建站推广门头沟青岛网站建设
  • 做期货应关注什么网站广告传媒公司主要做什么
  • 服装代销的网站源码购物平台推荐
  • 泸州住房和城乡建设厅网站建站seo推广
  • 能源企业 网站建设网站错位
  • 呼和浩特市网站公司电话武乡网站建设
  • 微信网站开发与网站实质区别个人网站免费域名获取