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

2402C++,C++使用单链列表

原文

#include <windows.h>
#include <malloc.h>
#include <stdio.h>//用于`列表项`的结构;第一个成员是`SLIST_ENTRY`结构,其他成员是数据.在此,数据只是测试
typedef struct _PROGRAM_ITEM {SLIST_ENTRY ItemEntry;ULONG Signature; 
} PROGRAM_ITEM, *PPROGRAM_ITEM;
int main( )
{ULONG Count;PSLIST_ENTRY pFirstEntry, pListEntry;PSLIST_HEADER pListHead;PPROGRAM_ITEM pProgramItem;//初化`列表头`为`MEMORY_ALLOCATION_ALIGNMENT`边界.pListHead = (PSLIST_HEADER)_aligned_malloc(sizeof(SLIST_HEADER),MEMORY_ALLOCATION_ALIGNMENT);if( NULL == pListHead ){printf("分配失败\n");return -1;}InitializeSListHead(pListHead);//在列表中插入`10`个项目.for( Count = 1; Count <= 10; Count += 1 ){pProgramItem = (PPROGRAM_ITEM)_aligned_malloc(sizeof(PROGRAM_ITEM),MEMORY_ALLOCATION_ALIGNMENT);if( NULL == pProgramItem ){printf("分配失败");return -1;}pProgramItem->Signature = Count;pFirstEntry = InterlockedPushEntrySList(pListHead, &(pProgramItem->ItemEntry)); }//从列表中删除`10`项,并显示签名.for( Count = 10; Count >= 1; Count -= 1 ){pListEntry = InterlockedPopEntrySList(pListHead);if( NULL == pListEntry ){printf("List is empty.\n");return -1;}pProgramItem = (PPROGRAM_ITEM)pListEntry;printf("Signature is %d\n", pProgramItem->Signature);//此例假定`SLIST_ENTRY`结构,是该结构的第一个成员.如果结构不遵循此约定,则必须在调用`free`函数前,计算结构的`起始地址`._aligned_free(pListEntry);}//刷新列表并验证项是否已消失.pListEntry = InterlockedFlushSList(pListHead);pFirstEntry = InterlockedPopEntrySList(pListHead);if (pFirstEntry != NULL){printf("Error: List is not empty.\n");return -1;}_aligned_free(pListHead);return 1;
}
http://www.lryc.cn/news/307141.html

相关文章:

  • 《Docker极简教程》--Docker服务管理和监控--Docker服务的监控
  • C++初阶 | [八] (下) vector 模拟实现
  • 信息安全计划
  • 【更新完毕】2024牛客寒假算法基础集训营6 题解 | JorbanS
  • FL Studio All Plugins Edition2024中文完整版Win/Mac
  • 神经网络系列---归一化
  • 2023 龙蜥操作系统大会演讲实录:《兼容龙蜥的云原生大模型数据计算系统——πDataCS》
  • 【Vue渗透】Vue站点渗透思路
  • 主数据管理是数字化转型成功的基石——江淮汽车案例分享
  • 【Spring连载】使用Spring Data访问 MongoDB(十一)----加密Encryption (CSFLE)
  • 【postgresql】数据表id自增与python sqlachemy结合实例
  • 什么是索引?在 MySQL 中有哪些类型的索引?它们各自的优势和劣势是什么?
  • Docker安装与基础知识
  • 搭建Facebook直播网络对IP有要求吗?
  • Qt开发:MAC安装qt、qtcreate(配置桌面应用开发环境)
  • python学习网站
  • 编程笔记 Golang基础 033 反射的类型与种类
  • MySQL进阶篇2-索引的创建和使用以及SQL的性能优化
  • 基于SVM的功率分类,基于支持向量机SVM的功率分类识别,Libsvm工具箱详解
  • 【IO流】FileWrite字符输出流
  • WPF 【十月的寒流】学习笔记(1):DataGrid过滤
  • 当Vue项目启动后,通过IP地址方式在相同网络段的其他电脑上无法访问前端页面?
  • native sql -ABAP开发从入门到精通笔记
  • C++完美转发【gpt】
  • C++之类和对象(2)
  • 时间序列分析实战(四):Holt-Winters建模及预测
  • Springboot之集成MongoDB无认证与开启认证的配置方式
  • BLEU: a Method for Automatic Evaluation of Machine Translation
  • 代码随想录算法训练营|day42
  • vscode与vue/react环境配置