c++实现:十字链表转置.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

数据结构实验报告

实验题目:基于十字链表的稀疏矩阵转置

实验内容及要求:

编写程序,从字符文件读入三个正整数m,n,t以及t个三元组(i,j,e)建立稀疏矩阵的十字

链表存储结构。其中,m、n分别表示矩阵行数和列数;i,j为非零元素行号和列号。编写算

法,实现矩阵转置,输出转置后的三元组到另一字符文件中,检查你的转置结果是否正确。要

求转置时不得新建元素结点(但允许新建行头/列头结点数组以及删除行头/列头结点数组,转置

前后,总头结点不允许改变)。

实验目的:掌握稀疏矩阵的十字链表存储结构。

数据结构设计简要描述:

建立十字链表存储从文件中读取的三元组,进行转置后,再存入新建的空十字链表中输出。

算法设计简要描述:

创建空十字链表,以插入结点的方式依次将从文件中读取的三元组存储于十字链表中;转

置以行为主序,检测到三元组则断开原十字链表行、列结点,将此三元组插入新十字链表中,

依次循环,直到原十字链表变空,进行空间销毁。

输入/输出设计简要描述:

从Mytext1.txt文件中读入三个正整数m,n,t以及t个三元组(i,j,e),输出在屏幕上,进

行转置后,输出转置后三元组在屏幕上,并且保存在文件Mytext2.txt中。

编程语言说明:

使用VisualC++编程;主要代码采用C++语言实现。

主要函数说明:

init(intm,intn)//创建空十字链表

insert(OLinkh,inti,intj,inte)//向十字链表插入结点

Delete(OLinkh)//销毁十字链表

Trans(OLinkh)//转置

TransInsert(OLinkhh,OLinkp)//转置过程中在各行各列插入结点

程序测试简要报告:

(1)测试实例1

程序输入:Mytext1.txt文件数据

程序输出:Mytext2.txt文件存储、转置前和转置后数据

1/9

(2)测试实例1

程序输入:Mytext1.txt文件数据

程序输出:Mytext2.txt文件存储、转置前和转置后数据

2/9

(3)测试实例1

程序输入:Mytext1.txt文件数据

程序输出:Mytext2.txt文件存储、转置前和转置后数据

3/9

源程序代码:

#includestdafx.h

#includeiostream

#includeiomanip

#includefstream

usingnamespacestd;

//定义十字链表结构体

typedefstructnode{

inti,j;

inte;

4/9

structnode*right,*down;

}OLNode,*OLink;

//创建空十字链表

OLinkinit(intm,intn){

OLinkh,row,col;

inti,j;

h=newOLNode;

h-i=m;h-j=n;

h-right=NULL;h-down=NULL;

row=h-down=newOLNode[m];

if(!h-down)returnNULL;

for(i=0;im;i++){

row[i].i=i;

row[i].right=row[i];

}

col=h-right=newOLNode[n];

文档评论(0)

偶遇 + 关注
实名认证
内容提供者

个人介绍

1亿VIP精品文档

相关文档