- 浏览: 731339 次
- 性别:
- 来自: 嘉兴
文章分类
- 全部博客 (386)
- Struts1.1 (2)
- Database (18)
- Core Java (15)
- Log4j (4)
- SSH (0)
- Dao (1)
- Architecture Design (1)
- References (2)
- Eclipse&MyEclipse (10)
- Hibernate (7)
- Spring (8)
- JavaMail (1)
- Data Structure And Algorithm (48)
- Struts 2 (2)
- SSI (1)
- SSL (2)
- JSTL (1)
- EJB3 (2)
- NET (2)
- XML (2)
- Components (2)
- Ant (3)
- Multi Thread (1)
- Performance Monitoring (1)
- Web Server (17)
- Oracle (1)
- jQuery (8)
- Regular Expression (1)
- Weblogic (1)
- Exception (1)
- Security (2)
- File Manipulation (1)
- JavaScript (12)
- JVM (2)
- HTML&DIV&CSS (4)
- Android (10)
- Beyond GFW (0)
- Business (0)
- SVN (6)
- 虚拟主机 (1)
- Virtual Host (3)
- My mentality (5)
- OS (15)
- ISPMP (3)
- Magento (5)
- Jsoup&HttpClient (7)
- LINUX (9)
- Database Design (0)
- Power Designer (1)
- TaobaoOpenPlatform (2)
- C/C++ (3)
- Maven (11)
- Quartz (1)
- Load Balance (1)
- Zabbix (4)
- Product&Business (1)
- Pay Interface (1)
- Tomcat (2)
- Redis (1)
- 集群 (1)
- Session (1)
- 共享Session (1)
- Jedis (1)
- jenkins (1)
- 持续集成 (1)
- Web前端 (1)
最新评论
-
aqq331325797:
特意注册账号上来说一句。牛逼!
swagger2.2.2 与 spring cloud feign冲突 -
KitGavinx:
跨顶级域名怎么保持sessionid一致?
Tomcat7集群共享Session 基于redis进行统一管理 -
jaychang:
dujianqiao 写道HI ,能否给一个完整的demo 啊 ...
淘宝订单同步方案 - 丢单终结者 -
GGGGeek:
找了一会儿,感觉mybatis应该没有这种操作,直到发现博主的 ...
mybatis collection list string -
dujianqiao:
HI ,能否给一个完整的demo 啊 ?
淘宝订单同步方案 - 丢单终结者
#include<iostream> #define TRUE 1 #define FALSE 0 #define MAX 999 using namespace std; //十字链表的元素定义 typedef struct OLNode{ OLNode *right; OLNode *down; int iIndex,jIndex,value; }OLNode,*OLink; //十字链表的定义 typedef struct CrossList{ OLink rhead[MAX+1],chead[MAX+1]; int m,n,len; }CrossList; //创建十字链表 void CreateCrossList(CrossList *M) { int m,n,len,k; cout<<"输入十字链表的行数,列数,元素个数\n"; cin>>m>>n>>len; M->m=m;M->n=n;M->len=len; //每行每列头指针初始为空 for(k=1;k<=M->m;k++) M->rhead[k]=NULL; for(k=1;k<=M->n;k++ ) M->chead[k]=NULL; int row,col,value; //将元素插入到十字链表中 for(cin>>row>>col>>value;row!=0;cin>>row>>col>>value) { OLNode *p=(OLNode*)malloc(sizeof(OLNode)); p->iIndex=row;p->jIndex=col; p->value=value; OLNode *q1=M->rhead[row]; //如果该行头指针为空,或者该行头指针指向元素的列标大于插入的列标 if(q1==NULL||M->rhead[row]->jIndex>col){ p->right=M->rhead[row]; M->rhead[row]=p; } else{ //寻找插入点 for(;q1->right!=NULL&&q1->right->jIndex<col;q1=q1->right); p->right=q1->right;q1->right=p; } q1=M->chead[col]; if(q1==NULL||M->chead[col]->iIndex>row){ p->down=M->chead[col]; M->chead[col]=p; } else{ for(;q1->down!=NULL&&q1->down->iIndex<row;q1=q1->down); p->down=q1->down;q1->down=p; } } } //输出十字链表的内容 void PrintCrossList(CrossList *M) { int rowLength=M->m,currentRow=1; for(int row=1;row<=rowLength;row++) { OLNode *p=M->rhead[row]; while(p!=NULL) { cout<<p->value<<" "; p=p->right; } cout<<"\n"; } } //查找i行,j列元素的值,找不到返回-1 int FindNode(CrossList *M,int i,int j) { if(i>M->m||i<=0||j>M->n||j<=0){ cout<<"不存在该元素\n"; return -1; } OLNode *p=M->rhead[i]; for(;p!=NULL&&p->jIndex<j;p=p->right); if(p==NULL||p->jIndex>j) return 0; return p->value; } int main() { char cmd; int i,j; do{ CrossList *M=(CrossList*)malloc(sizeof(CrossList)); CreateCrossList(M); PrintCrossList(M); cout<<"查找某一元素的值,请输入i,j\n"; cin>>i>>j; cout<<"元素的值为\n"; cout<<FindNode(M,i,j)<<"\n"; cout<<"Y/y继续\n"; cin>>cmd; }while(cmd=='Y'||cmd=='y'); return 0; }
发表评论
-
【排序算法系列】希尔排序
2015-12-05 16:14 834希尔排序的概述: a[0]...a[n-1 ... -
归并排序
2015-06-20 15:28 891public class MergeSort { pub ... -
插入排序
2015-06-20 15:27 478/** * 插入排序1 容易理解 * * ... -
有序线性链表归并
2013-10-05 11:30 1554#include<stdio.h> #incl ... -
Trie树 应用 Phone List
2012-06-15 11:21 1170Phone List 时间限 ... -
Trie树 单词查找树 键树(JAVA版附分析说明)
2012-06-13 10:27 5163来源于英文“retrieval”. ... -
Trie树 单词查找树 键树
2012-06-12 08:59 1151转自:http://zh.wik ... -
数字金额转中文大写金额
2010-11-26 15:09 1420/** * 用来将数字金额转化成中文大写的金额 ... -
汉诺塔递归算法
2010-11-25 08:17 1347import java.util.Scanner; /* ... -
约瑟夫出圈
2010-11-24 20:45 1091#include<iostream> #incl ... -
SmartHashSet只是为了解释HashSet的原理
2010-07-26 11:11 1354写该类的目的只是为了 ... -
二叉树中序遍历非递归算法
2010-06-29 23:17 1717#include<iostream> usi ... -
二叉树的创建
2010-06-29 23:15 1129#include<iostream> usi ... -
哈弗曼树建立与哈弗曼编码
2010-06-29 23:12 1240#include<iostream> #de ... -
二叉排序树转双向链表(要求无任何新增节点)
2010-06-29 23:07 2481题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双 ... -
线索二叉树中插入结点
2010-06-29 23:05 1879#include<iostream> usi ... -
二叉排序树的递归与非递归查找
2010-06-29 22:58 2301#include<iostream> usi ... -
二叉树中序线索化及查找某一结点的前驱,后继结点
2010-06-29 22:54 2676#include<iostream> usi ... -
稀疏矩阵转置
2010-06-29 22:39 1655#include<iostream> #defi ... -
单链表实现集合并交差操作
2010-06-29 22:34 1982#include<iostream> usi ...
相关推荐
在MFC中,我们可以创建自定义的类来实现十字链表,例如,可以继承CObject类作为基础,并添加所需的数据成员和成员函数。MFC的容器类如CList、CMap等也可以辅助实现链表的操作,例如存储和查找元素。 4. 州哥大作业...
在C语言中,创建十字链表节点需要定义一个结构体,包含四个指针和数据部分: ```c typedef struct Node { int data; // 存储元素 struct Node* up; // 指向上方的节点 struct Node* down; // 指向下方的节点 ...
在C++中实现十字链表,通常会涉及指针操作、节点定义、链表操作以及可能的模板类设计,以提供泛型编程的能力。 首先,我们来看C++中的模板类。模板是C++中的一项重要特性,它允许我们编写通用的代码,适用于不同...
十字链表是一种常见的稀疏矩阵存储方式,尤其适用于表示非零元素分布不均匀的情况。本问题主要讨论如何使用十字链表来存储稀疏矩阵,并实现两个稀疏矩阵的乘法运算。 首先,我们来看十字链表的结构。十字链表由两...
- 定义两个函数`CreateSMatix_OL(CrossList &M)`来创建十字链表存储的稀疏矩阵。 - 输入矩阵的行数、列数和非零元素个数。 - 根据输入的信息逐个插入非零元素。 **输出稀疏矩阵**: - 设计函数输出稀疏矩阵,只需...
根据给定文件的信息,我们可以总结出以下关于“十字链表-稀疏矩阵 C++ 代码”的相关知识点: ### 一、基础知识概述 #### 1.1 十字链表概念 十字链表是一种特殊的链表结构,每个节点不仅包含指向同一行其他节点的...
在C#中实现十字链,我们需要定义一个节点类,包含四个指针,分别表示上、下、左、右的相邻节点。代码示例如下: ```csharp public class Node { public int Value; public Node Up; public Node Down; public ...
十字链表结合了邻接矩阵和邻接表的优点,不仅节省了空间,还提高了查找效率。每个顶点都有两个链表:一个指向所有进入该顶点的边(入边),另一个指向所有从该顶点出发的边(出边)。这样的设计使得对任意一个顶点的...
在C语言中实现十字链表稀疏矩阵,我们需要定义以下结构体: 1. `Node` 结构体:表示链表节点,包含元素值、行索引、列索引和指向相邻节点的指针。 2. `SparseMatrix` 结构体:表示整个稀疏矩阵,包括非零元素的数量...
主要内容包括:十字链表的基本概念、十字链表在C语言中的实现方式、创建十字链表的过程、打印十字链表的方法以及两个十字链表相加的算法。 ### 十字链表基本概念 十字链表是一种特殊的链表形式,它主要用于稀疏...
十字链表是一种特殊的图数据结构,它用于存储稀疏图,即边的数量远小于顶点数量的图。这种数据结构可以高效地进行邻接顶点的查找和操作。在这个问题中,我们有四个文件,它们共同实现了十字链表的数据结构及其相关...
十字链表法是一种高效处理稀疏矩阵的存储结构,它结合了行链表和列链表的优势,使得在稀疏矩阵中的非零元素查找、插入和删除操作更加便捷。稀疏矩阵是指大部分元素为零的矩阵,对于这类矩阵,使用十字链表可以节省...
在C#中实现十字链,首先需要定义一个节点类,该类包含四个指针以及存储的数据。节点类的代码可能如下: ```csharp public class Node { public int Value; public Node Left; public Node Right; public Node ...
1. 创建一个新的十字链表,用于存储转置后的矩阵。 2. 遍历原始矩阵中的所有非零元素。 3. 对于每一个非零元素(a, b, value),在新链表中创建一个节点(b, a, value)。 4. 将这些节点按照行号和列号的顺序插入到新的...
然而,三元组顺序表在查找、插入和删除操作上效率较低,因此引入了十字链表作为更优的存储结构。十字链表由两个方向的链接组成,横向链接连接同一行的非零元素,纵向链接连接同一列的非零元素。这种结构使得对矩阵的...
- 查找路径:通过十字链表查找两个顶点间的路径。 - 打印图:输出图的结构,便于理解和调试。 在C语言实现中,这些操作通常通过函数完成,例如`add_vertex()`, `add_edge()`, `remove_vertex()`, `remove_edge()`, ...
例如,`create_cross_list()`函数用于创建双十字交叉链表,`save_cross_list()`用于保存链表到文件,`load_cross_list()`用于从文件加载链表,`traverse_cross_list()`用于遍历链表并显示信息,而其他函数如`search_...
为了解决这个问题,我们可以采用稀疏矩阵的表示方法,主要有两种常见的实现:三元组存储法和十字链表。 **三元组存储法** 三元组存储法是一种将非零元素以三元组(行号,列号,值)的形式存储的方法。通常,这些...
十字链表可以高效地处理非连续的元素,源码可能会展示如何创建、插入、删除和遍历十字链表节点。 7. **顺序表**:顺序表是一种用一维数组存储数据的数据结构,元素按线性顺序排列。在C语言中,顺序表的源码可能包含...
景点查询链表是一种高效的数据结构,它利用了十字链表(Cross-Linked List)的特点来组织和管理景点信息。在IT行业中,数据结构是解决实际问题的基础,它们直接影响到程序的运行效率和内存使用。本篇文章将深入探讨...