C语言实现stack模板

基于WebGL架构的3D可视化平台—平面图导航(一) 前言 利用CampusBuilder来搭建自己的虚拟世界过程有这样一个问题:如何快速聚焦到虚拟场景的某一位置。当然我们可以创建几个按钮对应查找我们需要去的位置(参照物)并聚焦,但是按钮并不是很炫酷也不能很好的反馈给我们一些信息。接下来我们就用平面导航图来解决这一问题。 第一步:使用CampusBuilder搭建模拟场景,CampusBuilder操作简单,分分钟就可以上手。 ... 阅读详情

 看了bsd的<sys/queue.h>源码,才知道C语言能通过宏实现C++模板的功能,真是太强大了! 

  我也学习着写了一个stack模板。有什么好的建议欢迎留言啊~~ 

  "stack.h" 

  #ifndef MICRO_STACK_H 

  #define MICRO_STACK_H 

  #include <string.h> 

  #include <stdlib.h> 

  #define STACK_NODE(name) name##__node 

  #define STACK_TEMPLATE(name,type) / 

  struct STACK_NODE(name) / 

  { / 

  type data; / 

  STACK_NODE(name) *next; / 

  }; / 

  typedef struct / 

  { / 

  STACK_NODE(name) *top; / 

  }name 

  #define STACK_INIT(stack) / 

  do{(stack)->top=NULL;}while(0) 

  #define STACK_IS_EMPTY(stack) / 

  ((stack)->top==NULL) 

  #define STACK_GET_TOP(stack) / 

  ((stack)->top->data) 

  #define STACK_POP(stack,node) / 

  do{ / 

  if((stack)->top==NULL) break; / 

  (node)=(stack)->top; / 

  (stack)->top=(stack)->top->next; / 

  }while(0) 

  #define STACK_PUSH(stack,node) / 

  do{ / 

  if((node)==NULL) break; / 

  (node)->next=(stack)->top; / 

  (stack)->top=(node); / 

  }while(0) 

  #define STACK_NEW_NODE(name,node,value) / 

  do{ / 

  (node) = (struct STACK_NODE(name)*) / 

  malloc(sizeof(struct STACK_NODE(name))); / 

  if((node)) (node)->data = http://blog.soso.com/qz.q/value; / 

  }while(0) 

  #define STACK_DEL_NODE(node) / 

  do{ / 

  free((node)); / 

  (node) = NULL; / 

  }while(0) 

  #endif 

  用法示例: 

  #include <stdio.h> 

  #include "stack.h" 

  int main() 

  { 

  STACK_TEMPLATE(istack,int);/* typedef stack<int> istack; */ 

  istack stack1; 

  struct STACK_NODE(istack) *p=NULL; 

  STACK_INIT(&stack1); 

  STACK_NEW_NODE(istack,p,10); 

  STACK_PUSH(&stack1,p); 

  printf("%d/n",STACK_GET_TOP(&stack1)); 

  STACK_NEW_NODE(istack,p,20); 

  STACK_PUSH(&stack1,p); 

  printf("%d/n",STACK_GET_TOP(&stack1)); 

  STACK_NEW_NODE(istack,p,30); 

  STACK_PUSH(&stack1,p); 

  printf("%d/n",STACK_GET_TOP(&stack1)); 

  while(!STACK_IS_EMPTY(&stack1)) 

  { 

  STACK_POP(&stack1,p); 

  printf("%d/n",p->data); 

  STACK_DEL_NODE(p); 

  }; 

  return 0; 

  } 

《Android最全面试题-Offer直通车》目录 如今Android求职是僧多粥少,竞争非常激烈,企业招聘时要求很高,本专栏汇聚android面试各种考点,各大公司Android面试题,《Android 最全面试题》将助你全方位提升,助您脱颖而出,早日拿到满意Offer。本专栏汇聚了海量优质内容,文章数量超过100 篇。凭借过硬的质量,每月新增订阅用户数以百计,如今仅需特惠价 9.9 元,限时抢购,后续将逐步恢复原价,早订阅早开启逆袭之旅。精心筹备,整理出一系列超万字精华篇章,累计数十万的 Android 面试题深度剖析。 阅读详情

相关推荐

【MUJOCO控制篇-2】控制一个简单的机械臂

本篇博客将逐步分析和解释如何通过Python代码使用MuJoCo库来控制一个机械臂模型。我们将从加载模型开始,逐步深入到PID控制器的实现,最后讨论如何实现轨迹跟踪功能。上期内容为如何建模一个简单的机械臂模型,本篇文章将基于上篇内容进行深入探讨如何实现一个简单的控制。

echo_Fangyb的博客 6747

栈(stack) C语言实现 详解

栈是数据结构中较为简单的结构体,是一种操作收到限制的线性表.但简单不代表没用,毕竟数组还贼简单呢.谁敢说数组没用?栈栈的理论 栈是一个先进后出的结构,类似于堆盘子,先放到地上的盘子最后被取走(默认只能取走一个盘子) 栈其实就是操作受限的线性表,只有一个口,每一次操作时,这个口可以当出口也可以当入口. 例如:水桶,注入水时,水桶的头当做入口,倒水时,水桶的头当做出口 栈的图解.在图解之前,先举一个例...

过道 10万+

[misc]智能车协议分析:2020网鼎杯青龙组misc_teslaaaaa_wp

[misc]智能车协议分析:2020网鼎杯青龙组misc_teslaaaaa_wp 文章目录[misc]智能车协议分析:2020网鼎杯青龙组misc_teslaaaaa_wp分析log文件格式分析协议组成UDS网络传输层UDS统一诊断服务协议分析文件提取文件逆向flag计算参考链接: teslaaaaa这道题是青龙组被做出来的题目中做出来人数最少的,直到比赛快结束才有第一个人做出来,怎么说,难并不是因为脑洞大,讲道理这道题是一道好题,我当时也是肝了一天没做出来,我倒是把文件提取出来了,奈何比赛时间已经接近尾

Breeze的博客 1万+

C 语言中模板的几种实现方式

简单宏定义实现 简单宏定义 - 方式一 这种方式将主要实现部分放在一个宏定义中,利用字符替换的方式实现不同 type 的运算,详细思路见代码: simple_macro_1.c #include <stdint.h> #define INT8 8 #define INT16 16 #define INT32 32 #define DO_MAIN(type) do { \ int i;

jinchengzhou的专栏 3754

RK3568-适配phy芯片ip101gri

复位时间查阅数据手册。

Paper_Love的博客 2643

【YOLO26科研级突破】集成BiFPN双向特征金字塔,让多尺度特征融合效率与精度双跃升

打开确保模型解析器能识别BiFPN模块。通过将BiFPN双向特征金字塔集成到YOLO26中,我们实现了一个“全尺度双向特征流动+加权融合+精准检测”的目标检测模型。这个改进不仅在工程上能大幅提升多尺度、复杂场景下的检测精度,更在科研上提供了“双向特征融合”的创新思路——这种思路可以延伸到其他检测网络(如Faster R-CNN、SSD)的Neck模块改进中,帮你在论文中打造独特的研究点。

LXY_LOVE36的博客 199

栈(stack)入门详解之C语言版

栈(Stack):是一种受限的线性表,即限制在表的一端进行插入和删除操作。栈也称为后进先出LIFO (Last In First Out)或先进后出FILO (First In Last Out)线性表。 栈顶(top):允许进行插入、删除操作的一端称为栈的栈顶(top),也称为表尾。 栈底(bottom):固定不动的一端,称为栈底(bottom),也称为表头。

sunnyoldboy博客 8233

Doris数据过期策略:自动清理历史数据

在数据的世界里,就像我们的房间会堆满各种东西一样,数据库也会积累大量的数据。随着时间的推移,很多历史数据可能不再经常被使用,但它们却占据着宝贵的存储空间。Doris是一款强大的数据库,为了让它能更高效地运行,合理地管理数据,我们就需要一种方法来自动清理那些不再需要的历史数据。本文的目的就是详细介绍Doris的数据过期策略,让大家知道如何利用这个策略来实现自动清理历史数据。范围涵盖了从基本概念到实际操作的各个方面。本文会先介绍一些和Doris数据过期策略相关的术语,让大家对一些专业词汇有个基本的了解。

软件工程实践的博客 554

【C语言】栈(Stack)的实现(定义、入栈、出栈、销毁)|图解数据结构,超详细解析

定义一个栈结构体。

weixin_45031801的博客 1万+

Jetson Orin Nano 平台适配IMX585 camera驱动调试记录

Jetson Orin Nano Devkit适配imx585 camera使用argus_camera捕获流,图片是黑色的用示波器来测量mipi信号,信号正常Jetpack版本: sensor参数: dts配置: 分析log: 如图: EBD有两行修改dts: 测试如下:log: 需要注意极性互换查看相应的原理图设置。可以使用设备树属性lane_polarity在任何lane上配置极性交换。例如, 尝试调整极性出现花屏 根据上述像素时钟配置说明调整为如下配置后,出图正常

jzwjzw19900922的博客 1320

【OpenClaw从入门到精通】零基础入门——OpenClaw核心概念快速理解(2026入门版)

OpenClaw是一个强大的AI代理框架,旨在构建智能化的自动化任务处理系统。随着人工智能技术的快速发展,OpenClaw为开发者和企业提供了一个完整的解决方案,用于创建能够理解、学习和执行复杂任务的智能体。本文将带领零基础的读者快速理解OpenClaw的核心概念,从基础架构到实际应用,为后续深入学习奠定坚实基础。通过本文的学习,你将掌握OpenClaw的基本原理、核心组件和快速上手方法。

一键难忘的博客 324

【转】C语言实现stack模板

<br />看了bsd的<sys/queue.h>源码,才知道C语言能通过宏实现C++模板的功能,真是太强大了!<br />我也学习着写了一个stack模板。有什么好的建议欢迎留言啊~~<br />"stack.h"<br />#ifndef MICRO_STACK_H #define MICRO_STACK_H #include <string.h> #include <stdlib.h> #define STACK_NODE(name) name##__node #define STA

蓝色天空下的天涯人! 881

前拉后推计划逻辑适用于哪些行业和企业规模?

《前拉后推计划逻辑的行业适用性分析》摘要:前拉后推计划逻辑(需求端后推锚定交付、供应端前拉匹配资源)最适用于需求波动大且具规模效益的行业,包括家具制造(定制化需求+批量运输)、机械装备(非标设备+部件采购)、消费电子(短周期产品+核心部件备货)及汽车配套(交期绑定+批量生产)等领域。该模式要求企业具备:1)独立计划部门;2)ERP/MES等信息系统;3)资源冗余能力,故更适配中型(1-10亿营收)和大型企业(10亿+)。小型企业需简化应用,仅聚焦关键环节。不适配需求稳定(如快消品)、无规模效益或短周期生产的

追随内心 144

C++模板详解

在没有模板之前,我们得针对各个类型写Swap函数和Stack类,而这些函数和类,逻辑是一样的,只是处理的对象类型不同。模板的原理:编译器根据调用模板和类的类型,实例化出对应的函数的类放到进程的代码段去执行。模板的原理:我们写了模板,编译器通过模板实例化相应的函数(语言的印刷术)这里我们不能调用函数模板,调用的是模板实例化生成的对应类型的函数。一些类和函数和类的时候,针对不同类型需要写很多重复的代码。类:比如Stack,存int,double。过程发生在预处理阶段,叫做模板的实例化。调用的是同一个函数吗。

mzk_c的博客 218

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C语言与C++栈实现对比:从手动管理到STL容器适配器

栈作为一种后进先出的基础数据结构,在计算机科学中广泛应用于函数调用、表达式求值等场景。其核心原理是通过线性存储和受限操作实现高效的数据管理。理解栈的实现机制对于掌握内存管理、算法优化至关重要。在工程实践中,栈的实现方式直接影响代码的性能、安全性和可维护性。C语言通过结构体和指针手动实现栈,提供了极致的控制力和透明度,适合嵌入式系统等资源敏感场景。而C++的std::stack作为容器适配器,基于模板和RAII机制,封装了底层内存管理,提供了类型安全和开发效率。本文通过对比两种实现,深入探讨了动态扩容、内存管

weixin_33894640的博客 321

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

探索后台精灵:一个简洁的C语言实现的Linux守护进程框架

探索后台精灵:一个简洁的C语言实现的Linux守护进程框架 在深入系统底层的世界中,守护进程扮演着至关重要的角色。它们静默地运行于幕后,执行着诸如日志记录、服务监控等核心任务。今天,我们将探索一款由C语言编写的简约守护进程框架——基本的Linux守护进程骨架(Basic Skeleton of a Linux Daemon Written in C)。这款开源项目不仅为开发者提供了快速启动守护进程...

gitblog_01058的博客 364

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【C语言学习】栈的操作模板

【C语言学习】栈的操作模板 #include<stdio.h> typedef struct node { int data; struct node *next; }Node; typedef struct stack { Node * stackTop; int stackSize; }Stack; Node * CrateNode(int data) { Node* newNode=(Node*)malloc(sizeof(Node));

m0_50605365的博客 345

C与C++栈实现对比:从手动内存管理到模板泛型编程

栈(Stack)作为一种后进先出(LIFO)的线性数据结构,是计算机科学中函数调用、表达式求值等场景的核心基础。其实现原理依赖于数组或链表存储,通过栈顶指针的移动完成入栈(push)和出栈(pop)操作,确保了操作的时间复杂度为O(1)。在工程实践中,栈的高效实现直接关系到程序的内存安全与性能。C语言通过结构体和指针手动管理内存,赋予开发者对内存布局和生命周期的极致控制,但需谨慎处理内存泄漏与野指针问题。而C++则利用模板(Template)实现泛型编程,结合RAII(资源获取即初始化)机制自动管理资源,通

weixin_34323858的博客 338

《深入理解计算机系统》读书笔记(ch2)+ C 泛型

本章主要介绍各类型的机器表示,Stanford的CS107的lec2和lec3有精彩解释,比看书快(当作书中只是的cache吧)。 lec4中介绍的C里面如何使用泛型(没有template, reference)的技巧在此记录一下: /*普通的swap函数*/void swap(int *ap, int *bp) { int temp = *ap; *ap = *bp...

weixin_30825581的博客 140

Uva 514 Rails

Stack基本练习题,没用STL,在Uva Status上排名第四,也是我在UVA排名最靠前的一题! #include #include #define MAXN 1010 int main() {     int n,target[MAXN],i,j,k,t

Xiao_Peng 1241

Problem B: 算法3-4:表达式求值

【代码】Problem B: 算法3-4:表达式求值。

QQ3503814312的博客 1215

C/C++ 数据结构栈

s.empty();//如果栈为空则返回true, 否则返回false;定义:stack< int > s;//返回栈顶元素, 但不删除该元素。//弹出栈顶元素, 但不返回其值。//返回栈中元素的个数。

weixin_49303682的博客 105

Hrbust-1939(栈)

#include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;stack&gt; #include&lt;iostream&gt; using namespace std; int main() { int T; while(scanf("%d",&amp;T)!=EOF) { getchar()...

旋转mu马 226

数据结构C语言实现链式栈模板

C语言链式栈模板 #include <stdio.h> #include <stdlib.h> /************************************************ * C语言链式栈模板 * * 1.InitLinkStack(ElemType data) 初始化链式栈:动态 * 创建头结点,为头结点数据域赋值,为头结点的next赋NULL * 值. * * 2.PopLinkStack(LinkStack *stack) 出栈:头结点

weixin_45622395的博客 326

栈的图文解析 和 对应3种语言的实现(C/C++/Java)

栈的介绍栈(stack),是一种线性存储结构,它有以下几个特点: (01) 栈中数据是按照”后进先出(LIFO, Last In First Out)”方式进出栈的。 (02) 向栈中添加/删除数据时,只能从栈顶进行操作。栈通常包括的三种操作:push、peek、pop。 push – 向栈中添加元素。 peek – 返回栈顶元素。 pop – 返回并删除栈顶元素的操作。1. 栈的示意图

Code-lover's Learning Notes 957

C到C++

C到C++: 1.C++应用场景 提示:这里可以添加学习目标 例如:一周掌握 Java 入门知识 学习内容: 提示:这里可以添加要学的内容 例如: 1、 搭建 Java 开发环境 2、 掌握 Java 基本语法 3、 掌握条件语句 4、 掌握循环语句 学习时间: 提示:这里可以添加计划学习的时间 例如: 1、 周一至周五晚上 7 点—晚上9点 2、 周六上午 9 点-上午 11 点 3、 周日下午 3 点-下午 6 点 学习产出: 提示:这里统计学习计划的总量 例如: 1、 技术笔记 2 遍 2、CS

陈子龙的博客 103
上一篇: Linux下设置环境变量的文件
下一篇: c语言用宏实现模板-以队列为例
ShenRui
博客等级 码龄20年 63粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值