数据结构---数组

来源:互联网 发布:直通车卡首屏软件 编辑:程序博客网 时间:2024/05/02 03:00

 数组的实现及操作:

#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(
" ");
}
原文:http://blog.csdn.net/arrowcat/archive/2008/04/02/2244432.aspx
原创粉丝点击