十字链表:数据结构详解与实现
📅 2026/7/23 3:05:29
👁️ 次浏览
1. 什么是十字链表十字链表Orthogonal List是一种用于存储稀疏矩阵的数据结构。它通过将稀疏矩阵的非零元素组织成一个十字交叉的链表从而高效地表示矩阵的行和列关系。与传统的二维数组存储方式相比十字链表可以显著节省存储空间并方便进行矩阵的转置、加法、乘法等运算。2. 十字链表的结构十字链表中的每个非零元素用一个结点表示每个结点包含五个域row元素所在的行号。col元素所在的列号。value元素的值。right指向同一行中下一个非零元素的指针。down指向同一列中下一个非零元素的指针。此外还需要两个一维数组行头指针数组rhead指向每一行的第一个非零元素结点。列头指针数组chead指向每一列的第一个非零元素结点。3. 十字链表的优点节省空间只存储非零元素适合稀疏矩阵。操作灵活插入、删除、修改非零元素相对方便。便于矩阵运算沿行或列遍历效率高易于实现转置、加法等。4. 十字链表的C语言实现以下是一个简单的十字链表创建与遍历的C语言示例#include stdio.h #include stdlib.h typedef struct OLNode { int row, col; int value; struct OLNode *right, *down; } OLNode, *OLink; typedef struct { OLink *rhead, *chead; int rows, cols, nums; // 行数、列数、非零元个数 } CrossList; // 初始化十字链表 void InitCrossList(CrossList *M, int rows, int cols) { M-rows rows; M-cols cols; M-nums 0; M-rhead (OLink *)malloc((rows 1) * sizeof(OLink)); M-chead (OLink *)malloc((cols 1) * sizeof(OLink)); for (int i 1; i rows; i) M-rhead[i] NULL; for (int j 1; j cols; j) M-chead[j] NULL; } // 插入一个非零元素 int InsertNode(CrossList *M, int row, int col, int value) { if (row 1 || row M-rows || col 1 || col M-cols) return 0; OLNode *p (OLNode *)malloc(sizeof(OLNode)); p-row row; p-col col; p-value value; p-right NULL; p-down NULL; // 处理行插入 OLNode *q M-rhead[row]; if (q NULL || col q-col) { p-right q; M-rhead[row] p; } else { while (q-right q-right-col col) q q-right; p-right q-right; q-right p; } // 处理列插入 q M-chead[col]; if (q NULL || row q-row) { p-down q; M-chead[col] p; } else { while (q-down q-down-row row) q q-down; p-down q-down; q-down p; } M-nums; return 1; } // 打印十字链表按行 void PrintCrossList(CrossList *M) { for (int i 1; i M-rows; i) { OLNode *p M-rhead[i]; while (p) { printf((%d, %d, %d) , p-row, p-col, p-value); p p-right; } printf(\n); } } int main() { CrossList M; InitCrossList(M, 5, 5); InsertNode(M, 1, 2, 3); InsertNode(M, 2, 3, 5); InsertNode(M, 4, 1, 7); InsertNode(M, 4, 4, 9); printf(十字链表内容按行输出\n); PrintCrossList(M); return 0; }5. 应用场景稀疏矩阵存储科学计算、图形学中大量零元素的矩阵。图论邻接矩阵的稀疏表示。数据库某些稀疏关系表的存储优化。网络分析表示稀疏的连接关系。6. 总结十字链表是处理稀疏矩阵的高效数据结构它通过链式结构将行和列关联起来在保证操作效率的同时大幅节约了存储空间。掌握十字链表的原理和实现有助于在涉及稀疏数据的算法设计中做出更优的选择。
对新手与注重稳健体验的外汇内容读者而言,“能看懂”往往比“堆概念”更重要。围绕Moneta Markets亿汇,以下重点写清解释是否通俗、规则是否易查、提示是否前置,以及服务是否具备连续性。外汇相关信息更新频繁,平台将关键提示与解…
📅 2026/7/23 3:05:29
7 月 18 日,OpenClaw 作者 Peter Steinberger 在 X 上问了一句:大家还在聊 Loop,还是已经转向 Graph 了?
两天后,Codez 写了一篇很长的教程,给出一条从零开始学习 Graph Engineering 的 14 步路线。 我相信…
📅 2026/7/23 3:05:29
前沿大语言模型(LLMs)正在生物安全领域展现出双重潜力:一方面,它们能够加速科学研究,辅助药物发现和生物信息分析;另一方面,这些模型也可能被滥用,生成有害的生物安全风险信息。这种…
📅 2026/7/23 3:04:29
1. KVM虚拟化平台概述KVM(Kernel-based Virtual Machine)作为Linux内核的原生虚拟化解决方案,已经成为企业级虚拟化部署的首选技术之一。我第一次接触KVM是在2012年为一个金融客户搭建测试环境时,当时就被它接近物理机的性能表现所…
📅 2026/7/23 4:25:50
智能组卷——从“一套卷”到“一人一卷”宏远培训考试系统支持固定组卷和随机组卷两种方式,满足不同形式的考试需求。固定试卷支持自动排版导出,可用于线下传统笔试;随机组卷方面,系统支持按照题型、题量、分类、难度等规则进行自…
📅 2026/7/23 4:25:50
1. 项目概述:从零构建一个工业级的C图书管理系统每次看到“图书管理系统”这个题目,很多C初学者可能会觉得它老套、简单,无非就是增删改查。但作为一个在后台开发领域摸爬滚打了十多年的老码农,我必须说,这个项目是检验…
📅 2026/7/23 4:25:50
那天下午,团队里一位刚接触量化交易的新同事跑来问我:“Alex Wang 总在提‘智能降维’,这和我们平时调参、优化模型到底有什么不一样?听起来挺玄的。” 这个问题其实挺典型的——很多人第一次听到“量化”和“智能降维”这两个词放…
📅 2026/7/23 4:25:50
1. 项目概述:从“会用”到“精通”的跨越上次我们聊了pytest的基础搭建和环境配置,算是把“地基”给打好了。很多朋友跟着操作下来,反馈说跑通第一个测试用例的感觉确实不错,但紧接着问题就来了:我总不能把所有测试代码…
📅 2026/7/23 4:25:50
搞地图服务的兄弟们,是不是每次遇到Geo Server切片插件加载慢、缓存打不开就头大?这篇干货直接给你拆解配置全流程,解决切片生成卡顿和预览失败的痛点,让你一次性跑通。说实话,我对Geo Server切片插件的感情真是爱恨交织。爱它是因为一旦配好了,那加载速度确实爽,地图响…
📅 2026/7/23 4:25:09
更多请点击:
https://intelliparadigm.com
第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…
📅 2026/7/23 0:00:26
最近好多同行在群里问 geo s1230 到底值不值得买。说实话,这机器在二手市场挺火。但水很深,新手很容易踩雷。我干了十年设备维护,见过太多冤大头。今天不扯虚的,直接上干货。先说价格,心里得有底。目前成色不错的二手货,大概在一万二到一万五之间。如果低于八千,别犹豫,…
📅 2026/7/23 0:01:16
更多请点击:
https://codechina.net
第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现࿱…
📅 2026/7/23 0:01:26
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/23 1:06:38
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/23 1:06:38
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/23 1:06:38
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/22 7:05:39
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/22 17:06:14
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/22 5:05:32