堆栈的相关操作

说明:本代码主要是实现了堆栈的进栈和出栈,还有堆栈的逆序操作。

 #include "stdio.h"
  2 #include "malloc.h"
  3 #define STACK_NUM 20
  4 struct Stack_Node;
  5 typedef struct Stack_Node
  6 {
  7     int data;
  8     struct Stack_Node *next;
  9 }StackNode;
 10 
 11 
 12 //define the fist stack node
 13 static StackNode *stack_head = NULL;
 14 void pop(void)
 15 {
 16     StackNode *old_head = NULL;
 17     old_head = stack_head;
 18     stack_head = stack_head->next;
 19     free(old_head);
 20 }
 21 
 22 void push(int data)
 23 {
 24     StackNode *new_node = NULL;
 25     new_node = (StackNode *)malloc(sizeof(StackNode));
 26     if(new_node == NULL)
 27         printf("malloc for new node fail.\n");
 28 
 29     new_node->data = data;
 30     new_node->next = stack_head;
 31     stack_head = new_node;
 32 }
 33 
 34 void print_stack()
 35 {
 36     StackNode *node = NULL;
 37     node = stack_head;
 38     while(node != NULL){
 39         printf("%d ",node->data);
 40         node = node->next;
 41     }
 42     printf("\n");
 43 }
 44 
 45 void reverse_stack(void)
 46 {
 47     StackNode *pCurr = NULL;
 48     StackNode *pNext = NULL;
 49     pCurr = stack_head->next;
 50     stack_head->next = NULL;
 51     while(pCurr != NULL){
 52         pNext = pCurr->next;
 53         pCurr->next = stack_head;
 54         stack_head = pCurr;
 55         pCurr = pNext;
 56     }
 57 }
 58 void main(void)
 59 {
 60     printf("to create the stack.\n");
 61     int i;
 62     for( i = 1;i <=STACK_NUM;i++){
 63         push(i);
 64     }
 65     printf("--------print the original stack-------\n");
 66     print_stack();
 67     pop();
 68     pop();
 69     printf("--------print the stack after pop twice-------\n");
 70     print_stack();
 71     printf("--------print the stack after reverse it -------\n");
 72     reverse_stack();
 73     print_stack();
 74     return;
 75 }

执行结果:

kldong@ubuntu:~/learning/linux/stack/own$ ./run 
to create the stack.
--------print the original stack-------
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 
--------print the stack after pop twice-------
18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 
--------print the stack after reverse it -------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 


内容概要 本资源是一套完整可运行的 Qt Widgets 批量图片压缩桌面工具源码,基于 Qt5/C++ 从零开发,专为初学者设计,分步实现图片批量处理全套功能。工具支持多选单张图片、直接读取整个文件夹内所有 JPG/PNG 图像,可自定义输出图片分辨率、调节 JPG0~100 区间压缩质量,自带锁定宽高比防拉伸变形功能;批量处理完成后自动统计每张图片压缩前后文件体积,计算整体压缩缩小比例,直观展示压缩效果。 适用人群 Qt/C++ 零基础初学者,学习 QImage 图像绘图、文件目录遍历、UI 交互开发; 需要本地批量处理图片的办公、设计、自媒体从业者; 想要学习图片缩放、JPG 压缩、本地文件 IO、进度条交互的开发学习者。 使用场景 自媒体批量压缩配图,降低图片体积节省上传流量; 摄影、设计批量统一图片尺寸,批量轻量化相册图片; 程序开发学习:QFileDialog 文件选择、QDir 文件夹遍历、QImage 缩放保存、QSlider 参数联动、批量循环界面防卡顿、文件大小格式化转换全套 Qt 图像开发实战案例。 工具核心功能清单 双模式导入图片:手动多选单张图片 / 一键读取整个文件夹全部图片; 自定义输出宽高分辨率,支持锁定原始宽高比,避免图片拉伸变形; 滑块调节 JPG 压缩质量 0~100,平衡图片清晰度与文件占用大小; 自定义输出保存目录,批量生成压缩后的图片文件; 实时进度条展示处理进度,循环中刷新界面,程序不会假死卡顿; 自动统计每张图片压缩前后体积,换算 KB/MB 直观展示; 批量完成弹窗汇总:图片总数、成功数量、单张大小对比、整体压缩节省空间比例; 完整模块化代码,功能拆分清晰,每段代码附带详细注释,新手可分步拆解学习。 其他说明 开发环境:Qt Creator + Qt5.15 MSVC,Windows 平台可直接编译运行; 源码结构清晰,功能
Trivy(发音)是一款全面且多用途的安全扫描工具。Trivy 配备了用于检测安全问题的扫描器,以及可发现这些问题的目标对象。 目标对象(Trivy 可扫描的内容): 容器镜像 文件系统 Git 仓库(远程) 虚拟机镜像 Kubernetes 扫描器(Trivy 可在目标对象中发现的内容): 正在使用的操作系统软件包和软件依赖项(SBOM) 已知漏洞(CVE) IaC 问题和配置错误 敏感信息和密钥 软件许可证 Trivy 支持大多数主流编程语言、操作系统和平台。完整列表请参见[扫描覆盖范围]页面。 要了解更多信息,请访问 Trivy 主页 了解功能亮点,或访问 文档站点 获取详细信息。 快速开始 获取 Trivy Trivy 可通过大多数常见的分发渠道获取。完整的安装选项列表请参见[安装]页面。以下是一些常用示例: brew install trivy docker run aquasec/trivy 从 https://github.com/aquasecurity/trivy/releases/latest/ 下载二进制文件 更多方式请参见[安装] Trivy 已与许多流行平台和应用程序集成。完整的集成列表请参见[生态系统]页面。以下是一些常用示例: GitHub Actions Kubernetes operator VS Code 插件 更多方式请参见[生态系统] 预览版构建 每次推送到主分支时,都会生成预览版构建(Docker Hub、GitHub、ECR 镜像以及 二进制文件)。 请注意:预览版构建可能存在严重错误,因此不建议在生产环境中使用。 基本用法 trivy <target> [--scanners <scanner1,scanner2>] <subject> 示例: trivy image python:3.4-alpine
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值