十字链表【待续】

游戏思考18:AOI视野同步算法介绍和简单实现(未完待续8/3) AOI方案简单理解: 暴力、九宫格、灯塔、十字链表、四叉树 阅读详情
#ifndef LINK_TABLE_H
#define LINK_TABLE_H
#include"stdafx.h"
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<string>
using namespace std;
struct Tnode
{
	int row,col,val;
	struct Tnode *right,*down;
};
void install(Tnode* head);
//void rand_num(int*  &head);
void wait(int wait_time);
void insert(Tnode* head);
void output( Tnode* head);
//void search(Tnode* head);
//void destory(Tnode* head);
//void add(Tnode* head);
//void sub(Tnode* head);
//void mult(Tnode* head);
//void plus(Tnode* head);
//void destory(Tnode* &head);

#endif

/////实现

#include"stdafx.h"
#include"link_table.h"

void install(Tnode* head)
{
	cout<<"请输入十字链表的头链表<列表>和<行表> :   ";
	int c,r;
	cin>>c>>r;
	if (r!=0&&c!=0)
	{
		if(r>=65535||c>=65535)
		{
			cout<<"超出整数能表示的最大数"<<endl;
			wait(5);
			exit(EXIT_FAILURE);
		}
		else
		{
			Tnode* rhead=new Tnode[r];
			Tnode* chead=new Tnode[c];
			for(int i=0;i<r;++i)
				{
					rhead[i].down=rhead[i].right=NULL;
					rhead[i].val=0;
					rhead[i].col=0;
					rhead[i].row=i;
				}//f
			for(int j=0;j<c;++j)
				{
					chead[j].right=chead[j].down=NULL;
					chead[j].val=0;
					chead[j].row=0;
					chead[j].col=j;
				}//for
	
			head->row=r;
			head->col=c;
			head->val=0;//count none_zero number 
			head->down=&rhead[0];
			head->right=&chead[0];
		
		}//else
	}//if
	return ;
}

void insert(Tnode* head)
{
	Tnode* pr=head->down;
	Tnode* pc=head->right;
	int r,c,val;
	cout<<"输入三元组的行,列,及非零数值"<<endl;
	for(cin>>r>>c>>val;val!=0 ;cin>>r>>c>>val)
	{
		if(r>head->row||c>head->col||val==0)
		{
			if(r>head->row)
			{
				cout<<"行值不能大于"<<head->row<<endl;
				cout<<"请再次输入 :  ";
					continue;
			}//if
			if(c>head->col)
			{
				cout<<"列值不能大于"<<head->col<<endl;
				cout<<"请再次输入 :  ";
				continue;
			}//if
		}// if(r>head->row||c>head->col||val==0)
///////////////////////////////华丽分割线/////////////////////////////	
else//////////核心实现过程//////////////
		{
			Tnode* tmp=new Tnode;
			tmp->row=r;tmp->col=c;tmp->val=val;
			tmp->right=tmp->down=NULL;
			if (pr[r].right==NULL) pr[r].right=tmp;
			else
				{
					Tnode* pr_t=&pr[r];
					do{
						pr_t=pr_t->right;
					}while ( pr_t->right !=NULL||pr_t->col<c);   //
						tmp->right=pr_t->right;
						pr_t->right=tmp;
		
				}//else

			if (pc[c].down==NULL)  pc[c].down=tmp;
		else
		{
			Tnode* pc_t=&pc[c];
			do{
				pc_t=pc_t->down;
			}while ( pc_t->down!=NULL||pc_t->row<r);
				tmp->down=pc_t->down;
				pc_t->down=tmp;
		}//
		}//////////else
//////////////////////////华丽分割线////////////////////////////////////////
		head->val=head->val+1;
	}//for
	return ;
}
void wait(int wait_time)///延时
{
	clock_t delay=wait_time*CLOCKS_PER_SEC;
	cout<<"计时5秒后,强制退出";
	clock_t start=clock();
	while(clock()-start<delay)
		;
	return;
}
void output(Tnode* head)  /// 输出函数
{
	Tnode* item=head->down;
	
	int row=head->row;
	for(int i=0;i<row;++i)
	{
		Tnode* pf=&item[i];
		while(pf->right!=NULL)
		{
			pf=pf->right;
			cout<<"( "<<pf->row<<" ,"<<pf->col<<" ,"
					<<pf->val<<" )"<<"\t";
		}
	}//for
	return ;
}
/*
void destory(Tnode* &head)
{
	int row=head->row;
	Tnode* pr=head->down;
	for(int r=0;r<row;++r)
	{
		Tnode* pr_t=&pr[r];
		Tnode* tmp=NULL;
	while (pr_t->right)
	{
		tmp=pr_t;
		pr_t=pr_t->right;
	}
	}//for
	delete [] head->down;
	delete [] head->right;
	num=sizeof(head);
	cout<<"after delete sizeof(head)=  "<<num;
	return ;
}
*/
/*void rand_num(int*  &head)
{
	srand((unsigned int ) time(NULL));
	cout<<"请输入数组的大小 : ";
	int row, col;
	cin>>row>>col;
	int rand_array=new int[row][col];
	for(int r=1;r<=row;++r)
	{for(int c=1;c<=col-1;++c)
		{
			rand_array[r][c]=rand()%10;
		}
	rand_array[r][c+1]=NULL;
	}
		head=&rand_array[1];
}*/

	



// cross_link_table.cpp: 主项目文件。
#include "stdafx.h"
#include"link_table.h"
int main()
{
	Tnode* head=new Tnode;
	head->row=head->col=head->val=0;
	head->right=head->down=NULL;
	
	install(head);
	
	insert(head);

	output(head);

//	destory(head);

	system("pause");
    return 0;
}

http://topic.youkuaiyun.com/u/20110602/23/0e84907d-f8f9-41ec-ae68-6a76269d5f71.html
数据结构实验——图的基本操作(未完待续) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* 实验四 图的有关操作 实验学时 4学时 背景知识 阅读详情

相关推荐

PICO+Unity MR空间网格开发实战:从零构建透视交互场景

本文详细介绍了使用PICO 4 Ultra与Unity引擎进行MR空间网格开发的完整实战流程。从环境准备、项目初始化、核心组件配置,到空间网格的生成、可视化与物理交互实现,手把手教你构建一个能识别真实环境并发射虚拟小球的透视交互场景。文章重点解析了PICO SDK中空间网格功能的关键配置与优化技巧,并提供了真机部署与调试的实用指南。

e3f4g5的博客 490

牛客网 链表 错题集

2019年6月23日 概念不清 单向链表队列 使用链表作为底层数据结构实现的队列 适用于压缩存储稀疏矩阵的两种存储结构是 三元组表的结点存储了行row、列col、值value三种信息,是主要用来存储稀疏矩阵的一种数据结构。 十字链表将行单链表和列单链表结合起来存储稀疏矩阵。 邻接矩阵空间复杂度达O(n2),不适于存储稀疏矩阵。 二叉链表又名左孩子右兄弟表示法,可用于表示树或森林。 广义...

西檬饭 558

问题:dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)

 1. 问题:Ubuntu安装软件的过程中出现依赖项的问题 “E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).” 按照指示执行如下两条命令都没有解决问题。 sudo apt-get -f install sudo apt-get --fix-broken ...

gloria_littlechi的博客 2万+

11.20数据结构----图的存储结构

小结一下今天所学的数据结构主要内容,真的不好怎么总结呀,有待提升! 图的存储结构 图:(说明) 图的存储结构比较复杂,其复杂性主要表现在:  a.任意顶点之间可能存在联系,无法以数据元素在存储区中的物理位置来表示元素之间的关系。  b. 图中顶点的度不一样,有的可能相差很大,若按度数最大的顶点设计结构,则会浪费很多存储单元,反之按每个顶点自己的度设计不同的结构,又会影响操作。

剑! 1289

2025东三省D题深圳杯数学建模实战解析:基于多模型融合的法医STR混合样本智能识别系统

本文深入解析了2025年东三省数学建模竞赛D题,即深圳杯赛题,聚焦于法医STR混合样本的智能识别挑战。文章系统阐述了构建一个基于多模型融合的智能识别系统的完整流程,涵盖贡献者人数判定、DNA贡献比例估计、个体基因型推断以及STR谱图去噪四大核心步骤。通过融合高斯混合模型、随机森林、非负矩阵分解、小波变换与深度学习等多种技术,并强调特征工程的重要性,为破解法医DNA混合样本分析这一行业难题提供了清晰的数学建模与AI实战思路。

weixin_29050271的博客 392

《从零搭建Vue3项目实战》(AI辅助搭建Vue3+ElemntPlus后台管理项目)零基础入门系列第一篇:开发环境准备

vue3入门实战:环境准备篇

感谢阅读 1385

【中级软件设计师】上午题3-数据结构(查漏补缺版)

因为我之前考研系统地学习过数据结构和操作系统,这两部分的笔记不完整。

xzrrr的博客 541

DeepLabv3+改进专栏

🔥【DeepLabv3+改进专栏!探索语义分割新高度】🌟 你是否在为图像分割的精度与效率发愁?📢 本专栏重磅推出:✅ 独家改进策略:融合注意力机制、轻量化设计与多尺度优化✅ 即插即用模块:ASPP+升级、解码器。

AIcurator的博客 2576

邻接表的创建

邻接表 特点:           1、想要知道某个顶点的度,就去查找这个顶点的边表中结点的个数                  2、若想判断顶点 Vi 到 Vj是否存在边,只需测试顶点 Vi 的边表中adjvex是否存在 Vj 的下标。           3、若求顶点的所有邻接点,其实就是对此顶点的边表进行遍历,得到adjvex域对应的顶点就是邻接点。 #inclu

怪咖小青年的博客 1万+

基于FPGA的64点fft变换verilog开发

这精度的损失在10bits看来对最后的误差的影响是存在是不可忽略的。此后,在这思想基础上又开发了高基和分裂基等快速算法,随着数字技术的高速发展,1976年出现建立在数论和多项式理论基础上的维诺格勒傅里叶变换算法(WFTA)和素因子傅里叶变换算法。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。

FPGA/MATLAB学习教程/源码/项目合作开发 1977

TEA-Tiny Encryption算法在FPGA的实现

在FPGA原型中,我们定义了一个TEA_FPGA模块,该模块包含一个输入数据端口(plain)、一个输入密钥端口(key)和一个输出数据端口(cipher)。在模块中,我们通过32轮的循环处理来实现TEA算法的加密过程,并将最终结果存储在cipher变量中。由于FPGA硬件的高速性能,这种基于HDL的TEA算法实现可以在短时间内完成大量的数据加密处理,从而提高加密效率和性能。总之,在FPGA中实现TEA算法可以大大提高加密效率和性能,通过使用硬件描述语言HDL来实现可以更高效、更快速地完成数据加密操作。

BitSlinger的博客 272

数据结构—05:图

五、图 1.分类: 无向图 有向图 无向完全图:在无向图中,任意两顶点都有一条直接边相连接 有向完全图:在有向图中,任意两顶点之间都有方向互为相反的两条弧相连接 无向网:无向图的每条边都带权 有向网:有向图的每条弧都带权 2.相关概念: 顶点的度:指依附于某顶点 v 的边数,记为 TD(v) 入度:是指以顶点 v 为终点的弧的数目,记为 ID(v) 出度:是指以顶点 v 为起始...

jingzhi111的博客 245

银行统一监管报送系统

依据《银行业金融机构数据治理指引》,银行业金融机构应当建立适应监管数据报送工作需要的信息系统,实现流程控制的程序化,提高监管数据加工的自动化程度。银行业金融机构应当将监管数据纳入数据治理,建立工作机制和流程,确保监管数据报送工作有效组织开展,监管数据质量持续提升。银行通常要对接报送EAST5.0、1104、CRSS等近40个监管应用,涉及近1000张报表。表13-01是主要的监管报送应用、报送依据、报送规范、监管机构名称。

银行信息系统应用架构详解 4348

数据结构:全面总结传送门

数据结构全面总结 正值寒假,想花费假期15天左右的时间将数据结构这本书上所有的算法按照书的目录顺序全部用c++/c(其实这里差别不是很大)代码实现一遍,自己再次熟悉所有算法用法的同时贴出源代码帮助有需要的朋友。(我现在也不是很清楚15天时间是太多还是太少,干就完事了,加油!) 后续每写一篇都将在这一篇下面附上传送门方便大家浏览~ 代码传送门 未完待续 ...

温柔的博客 232

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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...

【中级软件设计师】—(针对上午题)数据结构(二十八)

三个结点:5种四个结点:14种五个结点:42种。

道阻且长,行则将至。 502

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

数据结构(七)图

未完待续 图:各顶点之间的关系是多对多的(多指的是一或一以上)。 无向图(边) 有向图(弧) 若任意两个顶点之间都存在边,则称该图为完全图。 稀疏图和稠密图 带权的图称为网。 邻接点 度(有向图分为入度和出度) 第一个顶点到最后一个顶点相同的路径称为回路或环。 序列中不重复出现的路径称为简单路径。 除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路,称为简单回路或

Rookie_cong的博客 437

算法的艺术

要么编程,要么被动接受编程 ---题记 计算机科学是应用数学最难的一个分支,所以如果你是一位蹩脚的数学家,最好留在原地,继续当你的数学家---Dijkstra

微凉一季的专栏 3444

搜索算法

搜索的应用比较广泛、从最基本的DFS、BFS到记忆化搜索、再到启发式搜索、最后还要学习DLX才算是一个完结、 曾经想过有没有一种搜索可以贪心的实现、Greedy Search、感觉已经和启发式搜索比较接近了、但是终究还不是、网上看到过这方面的内容、没有继续深入的探究、 由于自身水平有限、只能粗略的总结一下自己学过的一些搜索姿势和应用、 深度优先搜索(DFS...

weixin_30337157的博客 97

深度学习框架的搭建(1)

一、序   现有很多深度学习框架,caffe/mxnet/tf/torch等训练框架,ncnn/mace等inference框架,我等会用即可。但是会用不代表会写,别人的代码也只是设计的结果,看不到别人分析的过程,而恰恰这才是最重要的能力,所以要锻炼和提高自己写代码的能力,必要重新进行分析和设计,为此工作的意义。 二、搭建思路   此前做过网站搭建的过程: 框架的搭建,与此有何不同,做...

ustb_liu的博客 3023

数据结构概论笔记

判断完全二叉树 特点一: 只允许最后一层有空缺结点且空缺在右边,即叶子结点只能在层次最大的两层上出现; 特点二: 对任一结点,如果其右子树的深度为j,则其左子树的深度必为j或j+1 即度为1的点只有1个或0个 数组和链表的区别: 数组(顺序结构)和链表(链式结构)都是线性结构。 但链表添加元素更快O(1)(不需要移动元素),但是查找元素需要遍历O(n)。数组在最后添加元素较慢O(n),但是查找元...

yahuuuwjl的博客 233

数据结构——线性结构的常见应用(数组)

文章目录一. 思维导图二. 数组的概述1. 定义2. 数组和线性表关系三. 数组的存储结构1. 一维数组存储结构关系2. 多维数组存储结构关系(1). 按行优先(2). 按列优先四. 特殊矩阵的压缩存储1. 概述2. 分类(1). 对称矩阵(2). 三角矩阵(3). 三对角矩阵(4). 稀疏矩阵 一. 思维导图 二. 数组的概述 1. 定义 由n个相同类型的数据元素构成有限序列,每个数据元素称为一个数组元素,数据元素在数组中的序号称为该元素下标,下标范围称为维界 [0,n-1] 2. 数组和线性表关系

巧克力布丁的博客 1301

笔记:图以及cpp基础

如int fun(int i,char a)和void fun(char a,int i)就可以构成函数重载,根据函数名修饰的原理我们可以得到_funic和 _funci两个经过修饰之后得到的函数名,在进行修饰后的函数名显然是不同的。定义:同一个作用域内,相同函数名,参数不同(类型不同,个数不同)可以构成函数重载(和返回值无关)分析其二:顶点i的度即为第i行和i列的“1”的个数,如果是无向图就只要考虑每一行“1”的个数。图的邻接矩阵为一个二维数组,设为A.arcs【i】【j】(理解为两个顶点之间的关系)

fengbinbin6310的博客 2082

C++基类,派生类,同名覆盖原则

// 同名覆盖原则.cpp: 主项目文件。#include "stdafx.h"#include#includeusing namespace std;class One{private: string name; int age;public: virtual ~One( )=0{ } void Get_name( )const { co

Free_Program_1314的专栏 8209

获取当前系统时间(三种方法)

#include #include void main() { /*方法1 time_t curTime = time(NULL); char* curDate = ctime(&curTime); printf(curDate); ----------------------- |通过给time()传递NULL参数获取当前日期和时间 |通过ctime()把获取的

Free_Program_1314的专栏 5947

数据结构--立体层次结构

// roomage.cpp: 主项目文件。 #include "stdafx.h" #include #include #include using namespace std; unsigned int sand(unsigned int (time(0) ) ); /*

Free_Program_1314的专栏 1209
上一篇: 自定义vector容器【未完待续】
下一篇: ORACLE命令 ROLLUP
错_对
博客等级 码龄16年 68粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值