资源简介
数据结构中常用的程序。
解压后有四个程序,分别是 表达式求值,二叉树,哈夫曼树,三元组系数矩阵。
程序用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语言版源代码
- DSDEMO-C演示(数据结构C语言版 严蔚敏
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- 实验报告:数据结构长整数四则运算
- 数据结构教程李春葆第五版书中例题
- 吕鑫vc6c++数据结构视频源码
- 数据结构教程李春葆第五版课后答案
- 算法表达式求值.cpp
- 李春葆课后习题答案(数据结构教材
- 数据结构1800题 题+答案(全)
- 数据结构(C语言版)ppt课件,清华,
- c++常用游戏算法及数据结构设计
- 数据结构超全面复习导图
- 《Data Structures and Algorithm Analysis in C
- 数据结构C语言版教学笔记严蔚敏
- 数据结构C语言版期末考试试题(有答
- 多功能计算器实现C++代码以及代码详
- C语言数据结构银行客户排队
- C语言实现栈操作
- 简易学生管理系统源码 数据结构 大作
- 数据结构与C语言综合习题集
- 数据结构实验——赫夫曼树相关
- C语言进阶源码---基于graphics实现图书
- 数据结构——C++语言描述 陈慧南
- 二叉树排序树建立及平衡处理
- 广东工业大学数据结构课程设计航空
- 数据结构课程设计扑克牌排序
评论
共有 条评论