资源简介
数据结构中常用的程序。
解压后有四个程序,分别是 表达式求值,二叉树,哈夫曼树,三元组系数矩阵。
程序用VS 2008写的。用其他编译器时去掉不必要的文件。
程序全部测试过。每个程序都有相应的程序说明。
代码片段和文件信息
#include
#include
#include
#define MAXSIZE 100
typedef struct
{
int row col; /* 该非零元素的行下标和列下标 */
int e; /* 该非零元素的值 */
}Triple;
typedef struct
{
Triple data[MAXSIZE + 1];
int len m n;
}TSMatrix;
/************************************************************************
** Function name: Read_Data
** Descriptions: 从文件中读取稀疏矩阵的原始数据
************************************************************************/
void Read_Data(TSMatrix *A TSMatrix *B)
{
FILE *fp;
int i j data;
if ((fp = fopen(“Data.txt“ “r“)) == NULL) {
printf(“打开文件错误!“);
exit(0);
}
fscanf (fp “%d %d“ &A->m &A->n); /* 读取文件矩阵1的行数和列数 */
A->len = 0;
for (i = 1; i <= A->m; i++) {
for (j = 1; j <= A->n; j++) {
fscanf (fp “%d“ &data);
if (data != 0) {
A->data[++(A->len)].e = data;
A->data[A->len].row = i;
A->data[A->len].col = j;
}
}
}
fscanf (fp “%d %d“ &B->m &B->n); /* 读取文件矩阵2的行数和列数 */
B->len = 0;
for (i = 1; i <= B->m; i++) {
for (j = 1; j <= B->n; j++) {
fscanf (fp “%d“ &data);
if (data != 0) {
B->data[++(B->len)].e = data;
B->data[B->len].row = i;
B->data[B->len].col = j;
}
}
}
fclose(fp);
}
/************************************************************************
** Function name: print
** Descriptions: 打印矩阵
************************************************************************/
void print(TSMatrix A)
{
int i j num = 1;
for (i = 1; i <= A.m; i++) {
for (j = 1; j <= A.n; j++) {
if (A.data[num].row == i && A.data[num].col == j)
printf(“%5d“ A.data[num++].e);
else
printf(“%5d“ 0);
}
printf(“\n“);
}
}
/************************************************************************
** Function name: In_TSMatrix
** Descriptions: 矩阵转置函数
************************************************************************/
void In_TSMatrix()
{
TSMatrix A B; /* A保存原始矩阵,B保存转置后的稀疏矩阵 */
int col t p q;
int num[MAXSIZE] position[MAXSIZE];
system(“cls“);
Read_Data(&A &B);
B.len = A.len;
B.m = A.n;
B.n = A.m;
if (B.len) {
for (col = 1; col <= A.n; col++)
num[col] = 0;
for (t = 1; t <= A.len; t++)
num[A.data[t].col]++;
position[1] = 1;
for (col = 2; col <= A.n; col++)
position[col] = position[col - 1] + num[col - 1];
for (p = 1; p <= A.len; p++) {
col = A.data[p].col;
q = position[col];
B.data[q].row = A.data[p].col;
B.data[q].col = A.data[p].row;
B.data[q].e = A.data[p].e;
position[col]++;
}
}
printf(“\n原始矩阵为:[%d × %d]\n\n“ A.m A.n);
print(A);
printf(“\n转置后的矩阵为:[%d × %d]\n\n“ B.m B.n);
print(B);
printf(“\n\t\t*****************\n“);
printf(“\t\t返回请按 \“任意键\“\n“);
printf(“\t\t*****************\n“);
getch();
}
/************************************************************************
** Function name:
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 122 2009-10-31 18:40 C程序\三元组稀疏矩阵\Data.txt
文件 22971 2009-11-01 20:40 C程序\三元组稀疏矩阵\Debug\Tiple.obj
文件 41984 2009-11-01 20:40 C程序\三元组稀疏矩阵\Debug\vc60.idb
文件 53248 2009-11-01 20:40 C程序\三元组稀疏矩阵\Debug\vc60.pdb
文件 192586 2009-11-01 20:40 C程序\三元组稀疏矩阵\Debug\三元组稀疏矩阵.exe
文件 221940 2009-11-01 20:40 C程序\三元组稀疏矩阵\Debug\三元组稀疏矩阵.ilk
文件 186780 2009-11-01 20:40 C程序\三元组稀疏矩阵\Debug\三元组稀疏矩阵.pch
文件 541696 2009-11-01 20:40 C程序\三元组稀疏矩阵\Debug\三元组稀疏矩阵.pdb
文件 10832 2009-10-31 18:53 C程序\三元组稀疏矩阵\Tiple.c
文件 95 2009-10-30 09:48 C程序\三元组稀疏矩阵\TSMatrix.txt
文件 4369 2009-10-19 20:15 C程序\三元组稀疏矩阵\三元组稀疏矩阵.dsp
文件 553 2009-10-31 19:22 C程序\三元组稀疏矩阵\三元组稀疏矩阵.dsw
文件 50176 2009-11-02 22:07 C程序\三元组稀疏矩阵\三元组稀疏矩阵.ncb
文件 48640 2009-11-02 22:07 C程序\三元组稀疏矩阵\三元组稀疏矩阵.opt
文件 926 2009-11-01 20:40 C程序\三元组稀疏矩阵\三元组稀疏矩阵.plg
文件 964 2009-10-31 19:20 C程序\三元组稀疏矩阵\程序说明.txt
文件 5034 2009-11-21 22:24 C程序\二叉树\Debug\BuildLog.htm
文件 65 2009-11-21 22:24 C程序\二叉树\Debug\mt.dep
文件 24801 2009-11-21 22:23 C程序\二叉树\Debug\Tree.obj
文件 44032 2009-11-21 22:23 C程序\二叉树\Debug\vc90.idb
文件 61440 2009-11-21 22:23 C程序\二叉树\Debug\vc90.pdb
文件 30720 2009-11-21 22:24 C程序\二叉树\Debug\二叉树.exe
文件 663 2009-11-17 17:41 C程序\二叉树\Debug\二叉树.exe.em
文件 728 2009-11-17 17:41 C程序\二叉树\Debug\二叉树.exe.em
文件 621 2009-11-21 22:24 C程序\二叉树\Debug\二叉树.exe.intermediate.manifest
文件 458416 2009-11-21 22:24 C程序\二叉树\Debug\二叉树.ilk
文件 429056 2009-11-21 22:24 C程序\二叉树\Debug\二叉树.pdb
文件 5414 2009-11-21 22:23 C程序\二叉树\Tree.c
文件 486400 2009-11-21 22:56 C程序\二叉树\二叉树.ncb
文件 883 2009-11-17 17:10 C程序\二叉树\二叉树.sln
............此处省略57个文件信息
相关资源
- 中序遍历二叉排序树
- 先序后继线索二叉树
- 宿舍管理系统 数据结构课程设计 宿舍
- 数据结构课程设计----C语言航空订票系
- 一个红黑树实现c源码
- C++实现快速排序
- 一些常见的数据结构ADT定义及相关数
- 清华 严蔚敏 《数据结构》代码全部实
- 表达式求值C语言实现
- Huffman 编码器与解码器-----数据结构课
- 教师工作量统计系统可改职工工作量
- 原创c++二叉树抽象数据类型实现
- 进销存货物管理系统数据结构
- 拓扑排序 ---排课表----数据结构
- 数据结构c语言版-单链表的操作程序代
- 数据结构 C语言 迷宫问题求解 栈
- 输出二叉树中某结点的双亲结点
- 数据结构课程设计交通信息管理系统
- 二叉树已知后序和中序遍历求前序遍
- 数据结构课程设计 通讯录的制作
- 数据结构课程设计——族谱管理系统
- 中缀表达式求值(C++ 含合法性检查,
- 二叉树实现
- 数据结构C语言版_伙伴系统.txt
- 表达式求值C语言实现《数据结构》课
- 校园导游图(C++)
- 校园导游咨询 C程序
- 数据结构课程设计公交线路优化查询
- 数据结构C语言课程设计平衡二叉树
- 数据结构 哈夫曼树C语言源代码
评论
共有 条评论