资源简介

数据结构中常用的程序。 解压后有四个程序,分别是 表达式求值,二叉树,哈夫曼树,三元组系数矩阵。 程序用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.embed.manifest

     文件        728  2009-11-17 17:41  C程序\二叉树\Debug\二叉树.exe.embed.manifest.res

     文件        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个文件信息

评论

共有 条评论