热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言stack简单实现.

2019独角兽企业重金招聘Python工程师标准main.h#ifndefMAIN_H#defineMAIN_H#defineTRUE1#defineFALSE0节点

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

// main.h
#ifndef MAIN_H
#define MAIN_H#define TRUE 1
#define FALSE 0//节点
struct stack_cell{void *data;struct stack_cell* next;
};struct stack{struct stack_cell* top;
};//
struct stack* stack_new();
int stack_puch(struct stack* stack,void* data);
void stack_free(struct stack* stack);
void stack_pop(struct stack* stack);
void *stack_top(struct stack* stack);
int stack_empty(struct stack* stack);
#endif// main.c
#include
#include
#include
#include
#include "main.h"struct stack* stack_new()
{struct stack* new_stack = (struct stack*)malloc(sizeof(struct stack));if(NULL == new_stack){return NULL;}new_stack->top = NULL;return new_stack;
}int stack_push(struct stack* new_stack,int * data)
{struct stack_cell* new_cell = (struct stack_cell *)malloc(sizeof(struct stack_cell));if(NULL == new_cell){return 0;}// data;new_cell->data = data;//找到自己要挂在在哪个点上new_cell->next = new_stack->top;//更新栈的最顶端的信息.new_stack->top= new_cell;return 0;
}// 只做内存的释放工作,不做数据的输出,
void stack_pop(struct stack* new_stack)
{struct stack_cell* stack_cell_new = new_stack->top;new_stack->top = stack_cell_new->next;free(stack_cell_new);
}// 数据的输出,
void * stack_top(struct stack* stack)
{return stack->top->data;
}int stack_empty(struct stack* stack)
{return stack->top == NULL;
}void stack_free(struct stack* new_stack)
{struct stack_cell *p;if(!new_stack){return ;}p= new_stack->top;while(p){struct stack_cell *next = p->next;free(p);p=next;}free(new_stack);}int main()
{int a=0,b=1,c=2,d=3;int *e,*f,*g;struct stack* new_stack = stack_new();if(NULL == new_stack){return FALSE;}stack_push(new_stack,&a);stack_push(new_stack,&b);stack_push(new_stack,&c);stack_push(new_stack,&d);// tope = (int *)stack_top(new_stack);printf("%d\r\n",*e);// popstack_pop(new_stack);f= (int*)stack_top(new_stack);printf("%d\r\n",*f);stack_pop(new_stack);g=(int*)stack_top(new_stack);printf("%d\r\n",*g);stack_pop(new_stack);stack_free(new_stack);return 0;
}

 


转:https://my.oschina.net/u/1579560/blog/862659



推荐阅读
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 本文提出了一种基于栈结构的高效四则运算表达式求值方法。该方法能够处理包含加、减、乘、除运算符以及十进制整数和小括号的算术表达式。通过定义和实现栈的基本操作,如入栈、出栈和判空等,算法能够准确地解析并计算输入的表达式,最终输出其计算结果。此方法不仅提高了计算效率,还增强了对复杂表达式的处理能力。 ... [详细]
  • 题目解析给定 n 个人和 n 种书籍,每个人都有一个包含自己喜好的书籍列表。目标是计算出满足以下条件的分配方案数量:1. 每个人都必须获得他们喜欢的书籍;2. 每本书只能分配给一个人。通过使用深度优先搜索算法,可以系统地探索所有可能的分配组合,确保每个分配方案都符合上述条件。该方法能够有效地处理这类组合优化问题,找到所有可行的解。 ... [详细]
  • 在C++程序中,文档A的每一行包含一个结构体数据,其中某些字段可能包含不同数量的数字。需要将这些结构体数据逐行读取并存储到向量中,随后不仅在控制台上显示,还要输出到新创建的文档B中。希望得到指导,感谢! ... [详细]
  • 当使用 `new` 表达式(即通过 `new` 动态创建对象)时,会发生两件事:首先,内存被分配用于存储新对象;其次,该对象的构造函数被调用以初始化对象。为了确保资源管理的一致性和避免内存泄漏,建议在使用 `new` 和 `delete` 时保持形式一致。例如,如果使用 `new[]` 分配数组,则应使用 `delete[]` 来释放内存;同样,如果使用 `new` 分配单个对象,则应使用 `delete` 来释放内存。这种一致性有助于防止常见的编程错误,提高代码的健壮性和可维护性。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 如何使用 `org.apache.tomcat.websocket.server.WsServerContainer.findMapping()` 方法及其代码示例解析 ... [详细]
  • 在编译 PHP7 的 PDO MySQL 扩展时,可能会遇到 `[mysql_driver.lo]` 错误 1。该问题通常出现在 `pdo_mysql_fetch_error_func` 函数中。本文详细介绍了导致这一错误的常见原因,包括依赖库版本不匹配、编译选项设置不当等,并提供了具体的解决步骤和调试方法,帮助开发者快速定位并解决问题。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 题目要求维护一个数列,并支持两种操作:一是查询操作,语法为QL,用于查询数列末尾L个数中的最大值;二是更新操作,用于修改数列中的某个元素。本文通过ST表(Sparse Table)优化查询效率,确保在O(1)时间内完成查询,同时保持较低的预处理时间复杂度。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 全局变量与常量在内存中的布局分析及应用
    本文详细探讨了全局变量与常量在内存中的存储布局及其应用。通过分析不同编译器和操作系统对全局变量与常量的处理方式,揭示了它们在内存中的具体分配机制。此外,文章还讨论了这些布局对程序性能和安全的影响,并提供了优化建议,帮助开发者更好地理解和利用全局变量与常量的内存管理。 ... [详细]
author-avatar
薇薇MM81_811
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有