数据结构与算法系列---数组
2008-04-02 12:43
260 查看
数组的实现及操作:
#define MAXSIZE 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int ElemType;
typedef struct ...{
int i,j;
ElemType e;
}Triple;
typedef struct ...{
Triple data[MAXSIZE];
int mu,nu,tu;
}TSMatrix;
//利用二维数据创建一个三元组顺序表
int CreatMatrix(int array[][3],TSMatrix *m)
...{
int q=0;
m->mu=3;
m->nu=3;
for(int row=0;row<3;row++)
...{
for(int col=0;col<3;col++)
...{
if(array[row][col])
...{
m->data[q].e=array[row][col];
m->data[q].i=row;
m->data[q].j=col;
q++;
}
}
}
m->tu=q;
return OK;
}
/**//*
int CreatMatrix(int *array,int rownum,int colnum,TSMatrix *m)
{
int q=0;
m->mu=rownum;
m->nu=colnum;
for(int row=0;row<rownum;row++)
{
for(int col=0;col<colnum;col++)
{
if(*array!=0)
{
m->data[q].e=*array;
m->data[q].i=row;
m->data[q].j=col;
q++;
}
array++;
}
}
m->tu=q;
return OK;
}
*/
//转置
int TransposeMatrix(TSMatrix m,TSMatrix &t)
...{
int q=0;
t.mu=m.nu;
t.nu=m.mu;
t.tu=m.tu;
if(t.tu)
...{
for(int col=0;col<m.nu;col++)
for(q=0;q<m.tu;q++)
if(m.data[q].j==col)
...{
t.data[q].i=m.data[q].j;
t.data[q].j=m.data[q].i;
t.data[q].e=m.data[q].e;
++q;
}
}
return OK;
}
//输出元素
void PrintMatrix(TSMatrix m)
...{
for(int c=0;c<m.tu;c++)
...{
printf("%d,%d is :%d ",m.data[c].i+1,m.data[c].j+1,m.data[c].e);
}
}
int main(int agrc,char *argv[])
...{
int array[3][3]=...{...{0,0,1},...{0,2,3},...{4,0,0}};
TSMatrix m,n;
CreatMatrix(array,&m);
// CreatMatrix(*array,3,3,&m);
// CreatMatrix(array[0],3,3,&m);
TransposeMatrix(m,n);
PrintMatrix(m);
printf("after transport .... ");
PrintMatrix(n);
printf(" ");
}
#define MAXSIZE 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int ElemType;
typedef struct ...{
int i,j;
ElemType e;
}Triple;
typedef struct ...{
Triple data[MAXSIZE];
int mu,nu,tu;
}TSMatrix;
//利用二维数据创建一个三元组顺序表
int CreatMatrix(int array[][3],TSMatrix *m)
...{
int q=0;
m->mu=3;
m->nu=3;
for(int row=0;row<3;row++)
...{
for(int col=0;col<3;col++)
...{
if(array[row][col])
...{
m->data[q].e=array[row][col];
m->data[q].i=row;
m->data[q].j=col;
q++;
}
}
}
m->tu=q;
return OK;
}
/**//*
int CreatMatrix(int *array,int rownum,int colnum,TSMatrix *m)
{
int q=0;
m->mu=rownum;
m->nu=colnum;
for(int row=0;row<rownum;row++)
{
for(int col=0;col<colnum;col++)
{
if(*array!=0)
{
m->data[q].e=*array;
m->data[q].i=row;
m->data[q].j=col;
q++;
}
array++;
}
}
m->tu=q;
return OK;
}
*/
//转置
int TransposeMatrix(TSMatrix m,TSMatrix &t)
...{
int q=0;
t.mu=m.nu;
t.nu=m.mu;
t.tu=m.tu;
if(t.tu)
...{
for(int col=0;col<m.nu;col++)
for(q=0;q<m.tu;q++)
if(m.data[q].j==col)
...{
t.data[q].i=m.data[q].j;
t.data[q].j=m.data[q].i;
t.data[q].e=m.data[q].e;
++q;
}
}
return OK;
}
//输出元素
void PrintMatrix(TSMatrix m)
...{
for(int c=0;c<m.tu;c++)
...{
printf("%d,%d is :%d ",m.data[c].i+1,m.data[c].j+1,m.data[c].e);
}
}
int main(int agrc,char *argv[])
...{
int array[3][3]=...{...{0,0,1},...{0,2,3},...{4,0,0}};
TSMatrix m,n;
CreatMatrix(array,&m);
// CreatMatrix(*array,3,3,&m);
// CreatMatrix(array[0],3,3,&m);
TransposeMatrix(m,n);
PrintMatrix(m);
printf("after transport .... ");
PrintMatrix(n);
printf(" ");
}
相关文章推荐
- 数据结构与算法(C#实现)系列---二叉堆(数组实现)
- 数据结构与算法系列-线性表-数组(线性表的推广)
- 数据结构与算法(C#实现)系列---二叉堆(数组实现)
- 数据结构与算法系列 目录
- 【计蒜客系列】挑战难题22:排序后的数组删除重复数字
- java io系列19之 CharArrayWriter(字符数组输出流)
- 剑指offer系列-T14_1调整数组顺序使奇数位于偶数前面
- Java数据结构与算法之数组
- 面试准备--数据结构与算法(一)--线性结构--数组、单链表、双链表
- Java数据结构与算法(一)-数组
- 数据结构与算法-数组
- 算法系列-两个有序数组中相同的数字
- 数据结构与算法--有序数组和二分法查找
- 数据结构与算法系列----平衡二叉树(AVL树)
- JavaScript系列二:变量、数组、流程控制、函数以及事件响应
- 数据结构与算法系列之一:八大排序之插入排序
- 数据结构与算法系列之一:八大排序之基数排序
- 【白话经典算法系列之十六】“基数排序”之数组中缺失的数字
- 编程技巧系列(4)Java数组转化成String
- 【白话经典算法系列之十五】“一步千里”之数组找数<转>