数据结构与算法系列---数组

 数组的实现及操作:

#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(
" ");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值