数组顺时针旋转90度后输出(行列相等用单向链表实现).docVIP

数组顺时针旋转90度后输出(行列相等用单向链表实现).doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数组顺时针旋转90度后输出(行列相等用单向链表实现)

数组顺时针旋转90度后输出 (行列相等用单向链表实现) //用单向链表实现二维数组的操作运算 #includeiostream #includeiomanip using namespace std; struct ArrayNode { int row; int column; int data; ArrayNode *next; }; ArrayNode *createArray(int n);//用单向链表创建二维数组 void getArrayData(int n,ArrayNode *head);//显示二维数组各元素 int arrayDiagonal(int n,ArrayNode *head);//求二维数组对角线之和 int arraySum(ArrayNode *head);//求二维数组总和 void outputSpinArray(int n,ArrayNode *head);//数组顺时针旋转90度后输出 int main() { ArrayNode *ListHead=NULL; int n; cout请输入二维数组的行数(已知行数与列数相等):endl;//二维数组行列相等,总元素个数就等于n*n cinn; if(n1) { ListHead=createArray(n); cout您输入的二维数组为:endl; getArrayData(n,ListHead); cout此二维数组的对角线之和为:arrayDiagonal(n,ListHead)endl; cout此二维数组的非对角线之和为:; coutarraySum(ListHead)-arrayDiagonal(n,ListHead)endl; cout此数组顺时针旋转度后为:endl; outputSpinArray(n,ListHead); } else cout二维数组的行数不能小于!endl; return 0; } //用单向链表创建二维数组 ArrayNode *createArray(int n) { ArrayNode *head=NULL,*tail=NULL,*temp=NULL; int num; cinnum; head=new ArrayNode; if(head==NULL) { cerrno memory available!endl; return NULL; } else { head-data=num; head-row=1;//数组行列均从开始计数 head-column=1; head-next=NULL; tail=head; } for(int i=2,j=1,k=1;k=n*n-1;i++,k++)//i为列数,j为行数,k用来计算输入的总个数 { cinnum; temp=new ArrayNode; if(temp==NULL) { cerrno memory available!endl; return head; } else { temp-data=num; temp-row=j; //coutj: jendl;//用来显示每个数组元素的赋值信息 temp-column=i; //couti: iendl;//用来显示每个数组元素的赋值信息 temp-next=NULL; tail-next=temp; tail=temp; if((k+1)%n==0) j++; if(i%n==0) i=0; //coutendl; } } return head; } //显示二维数组各元素 void getArrayData(int n,ArrayNode *head) { ArrayNode *put=head; int i=0; while(put) { if(put-row=nput-column=n) { coutsetw(4)put-data; i++; } if(i%n==0) coutendl; put=put-next; } coutendl; } //求二维数组对角线之和 int arrayDiagonal(int n,ArrayNode *head) { ArrayNode *p=head; int sum=0; while(p) { if((p-row==p-column)||(p-row+p-column==n+1))//行列都从开始,所以行数+列数=n+1是第二条

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档