现在的位置: 首页 > 综合 > 正文

遍历二维数组(从外向内绕圈)

2013年12月20日 ⁄ 综合 ⁄ 共 1927字 ⁄ 字号 评论关闭

遍历一个二维数组(从外向内绕圈)

//没有注释,但能很轻松看懂
比如数组
1 2 3
4 5 6
7 8 9
输出结果为1 2 3 6 9 8 7 4 5
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void function(int** a,int m1,int m2,int n1,int n2,int m,int n)
{
        int i;
        if(m1>m2||n1>n2)
        {
                return;
        }
        if(m1==m2)
        {
                for(i=n1;i<=n2;i++)
                {
                        printf("%d/t",a[m1*n+i]);
                }
                return;
        }
        else if(n1==n2)
        {
                for(i=m1;i<m2;i++)
                {
                        printf("%d/t",a[i*n+n1]);
                }
                return;
        }
        else
        {
                for(i=n1;i<=n2;i++)
                {
                        printf("%d/t",a[m1*n+i]);
                }
                for(i=m1+1;i<=m2;i++)
                {
                        printf("%d/t",a[i*n+n2]);
                }
                for(i=n2-1;i>=n1;i--)
                {
                        printf("%d/t",a[m2*n+i]);
                }
                for(i=m2-1;i>=m1+1;i--)
                {
                        printf("%d/t",a[i*n+n1]);
                }
                function(a,m1+1,m2-1,n1+1,n2-1,m,n);
        }
}
void random_array(int** a,int m,int n)
{
        int i,j;
        srand(time(0));
        for(i=0;i<m;i++)
        {
                for(j=0;j<n;j++)
                {
                        a[i*n+j]=rand()%100+1;
                }
        }
}
void print_array(int** a,int m,int n)
{
        int i,j;
        for(i=0;i<m;i++)
        {
                for(j=0;j<n;j++)
                {
                        printf("%d/t",a[i*n+j]);
                }
                printf("/n");
        }
}
int main()
{
        int m,n;
        int** a;
        printf("Please input m and n:");
        scanf("%d%d",&m,&n);
        a=(int **)malloc(sizeof(int)*m*n);
        random_array(a,m,n);
        printf("The array is/n");
        print_array(a,m,n);
        printf("The array visit is/n");
        function(a,0,m-1,0,n-1,m,n);
        printf("/n");
        free(a);
        return 0;
}

抱歉!评论已关闭.