注册 登录
编程论坛 C++教室

链表储存矩阵旋转90度输出 如何实现??

joker39 发布于 2008-09-14 22:10, 2040 次点击
程序代码:
#include <iostream>
using namespace std;
typedef struct LinkNode
{
        int x;
        int y;
        int data;
        LinkNode* next;
}Node;

int main()
{
    int m;
    int n;
    int data;
    Node * head=new Node;
    Node * p=new Node;
    head->next=p;      
    cout<<"输入行号和列号"<<endl;
    cin>>m>>n;
    for(int i=0; i<m; i++)
       for(int j=0; j<n; j++)
       {
           cin>>data;
           p->x=i;
           p->y=j;
           p->data=data;
           p->next=new Node;
           p=p->next;
       }   
     p=NULL;
     
     p=head->next;
     while(p->next){
        cout<<p->data<<" ";
        if(p->y==n-1) cout<<endl;
        p=p->next;
     }
     cout<<endl;
     system("pause");
     return 0;
}


矩阵我已经建立好了,就差一个旋转的算法。。。高手帮忙啊
4 回复
#2
zjl1382008-09-14 23:02
矩阵旋转90度

//先将矩阵转置,再依次将各列首尾互换.
#3
zjl1382008-09-14 23:04
abc      ail      lia
ijk  --->bjm----->mjb
lmn      ckn      nkc
#4
joker392008-09-15 23:57
晕  这样说我还是不懂  因为链表比较不一样啊
#5
jsnjzhxy2013-03-05 23:44
#include<stdio.h>
#include<iostream>
using namespace std;
int a[101][101],b[101][101],c[101][101];

int main()
{
    int i,j,n;
    scanf("%d",&n);
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(b,0,sizeof(c));
    for (i=1; i<=n; i++)
      for (j=1; j<=n; j++)
      scanf("%d",&a[i][j]);
    for (i=1; i<=n; i++)
      for (j=1; j<=n; j++)
        b[i][j]=a[j][i];
      printf("\n");
    /*for (i=1; i<=n; i++)
    {
      for (j=1; j<=n; j++)
        printf("%d ",b[i][j]);
      printf("\n");
    }
      printf("\n");*/
    for (i=1; i<=n; i++)
      for (j=1; j<=n; j++)
        c[i][j]=b[i][n+1-j];
    for (i=1; i<=n; i++)
    {
      for (j=1; j<=n; j++)
        printf("%d ",c[i][j]);
      printf("\n");
    }
    system("PAUSE");
}
谢谢
1