C++程序设计实践指导1.2二维数组的操作运算改写要求实现

改写要求1:改写为以单链表表示二维数组

#include <cstdlib>
#include <iostream>

using namespace std;
    struct LinkNode
      {
             int Row;
             int Column;
             int Data;
             LinkNode *next;
             };
class MATRIX
{
      int m;
      int sum;

      public:
       struct LinkNode* creat(int x[][40],int k)
             {
                        m=k;
                       LinkNode *pHead = new LinkNode;
                        pHead->next = NULL;
                        LinkNode* p = pHead;
                        for(int i=0;i<k;i++)
                        for(int j=0;j<k;j++)
                         {
                            LinkNode* pNewNode = new LinkNode;
                            pNewNode->Row = i;
                            pNewNode->Column = j;
                            pNewNode->Data = x[i][j];
                            pNewNode->next = NULL;
                            p->next = pNewNode;
                            p = pNewNode;
                         }
                        sum=0;
                        return pHead;
             }

             void process(LinkNode* pHead);
             void show(LinkNode* pHead)
             {
                  int i=0;
                  LinkNode* p = pHead;
                  p=p->next;
                  while(p)
                  {
                  cout<<p->Data<<"\t";
                  p=p->next;
                  i++;
                  if(i%4==0)
                  cout<<endl;
                  }
                  cout<<"sum="<<sum<<endl;
             }
      };
void MATRIX::process(LinkNode* pHead)
{
        LinkNode* p = pHead;
        p=p->next;
        while(p)
        {
         if((p->Row==p->Column)||(p->Row+p->Column==m-1))
                   continue;
                   sum+=p->Data;
        }
}
int main(int argc, char *argv[])
{
    int b[40][40]={{1,1,1,1},{1,2,2,1},{1,2,2,1},{1,1,1,1}};
    LinkNode *pHead=new LinkNode;
    MATRIX mtx;
    pHead=mtx.creat(b,4);
    mtx.process(pHead);
    mtx.show(pHead);
    system("PAUSE");
    return EXIT_SUCCESS;
}

  

时间: 2024-11-04 05:18:46

C++程序设计实践指导1.2二维数组的操作运算改写要求实现的相关文章

C++程序设计实践指导1.10二维数组元素换位改写要求实现

改写要求1:改写为以单链表和双向链表存储二维数组 改写要求2:添加函数SingleLinkProcess()实现互换单链表中最大结点和头结点位置,最小结点和尾结点位置 改写要求3:添加函数DoubleLinkProcess()实现互换双向链表中最大结点和头结点位置,最小结点和尾结点位置 #include <cstdlib> #include <iostream> using namespace std; #define M 3 #define N 4 struct SingleLi

C:二维数组常用操作

/* 说明:程序实现二维数组中插入列.插入行.交换两个指定位置的元素,并输出指定 位置元素的变化轨迹 作者:socrates 日期:2014-08-17 */ #include "stdafx.h" #include <stdlib.h> #include <assert.h> /*二维数组最大行数和列数*/ #define MAX_ROW_NUM (9) #define MAX_COL_NUM (9) /*二维数组中各元素位置信息*/ typedef stru

C++ 出现bug :二位数组的操作运算,求非对角线的元素的和

编写一个通用程序,求出二位数组(行数和列数必须相等)的非对角线的元素之和,试建立类MATRIX完成上述功能 #include<iostream> using namespace std; class MATRIX { public: void mATRIX(); void MATRIX_sum(); void MATRIX_display(); static int fact_len;//定义静态变量 private: int sum; int a[40][40]; }; int MATRIX

C++程序设计实践指导1.6超长数列中n个数排序改写要求实现

改写要求1:将以上程序改写为适合超长整数 改写要求2:将以上程序改写为适合超长数列 改写要求3:将数列中指定位置m开始的n个结点重新按降序排序 改写要求4:输出指定位置m开始的n个结点的超长整数 #include <cstdlib> #include <iostream> #include <string> using namespace std; struct LongIntegerNode { short int data; LongIntegerNode *nex

C++程序设计实践指导1.5求两个整数集合并集改写要求实现

改写要求1:改写为单链表结构可以对任意长度整数集合求并集 #include <cstdlib> #include <iostream> using namespace std; struct LinkNode { int data; LinkNode* next; }; class SET { public: struct LinkNode* creat(int x[],int len); struct LinkNode* copy(LinkNode* aHead); int no

C++程序设计实践指导1.1删除序列中相同的数改写要求实现

改写要求1:改写为以指针为数据结构 #include <iostream> #include <cstdlib> using namespace std; class ARP { int m; int* p; int count[10]; public: ARP(int x[],int size) { m = size; p = new int [m]; for (int i =0;i<m;i++) { p[i]=x[i]; } for (int i =0;i<m;i+

第14周上机实践项目1——折腾二维数组(1)

问题及代码 /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 11 月 27 日 * 版 本 号:v1.0 * * 问题描述: 按行序优先输出数组元素. * 输入描述:后两列元素. * 程序输出:数组元素: */ #include <iostream> using namespace std; int main() { int i,x,y; int a[

第14周上机实践项目1——折腾二维数组(2)

问题及代码 /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 11 月 27 日 * 版 本 号:v1.0 * * 问题描述: 按列序优先输出. * 输入描述:后两列元素. * 程序输出:数组元素: */ #include <iostream> using namespace std; int main() { int i,x,y; int a[5][4

第14周上机实践项目1——折腾二维数组(3)

问题及代码 /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 11 月 27 日 * 版 本 号:v1.0 * * 问题描述: 倒序输出. * 输入描述:后两列元素. * 程序输出:数组元素: */ #include <iostream> using namespace std; int main() { int i,x,y; int a[5][4]=