zoukankan      html  css  js  c++  java
  • 队列堆栈和数组-十字链表矩阵

    #include<iostream>
    #include <iomanip>
    #include"windows.h"
    using namespace std;
    struct OLinMatrixkNode
    {
        int data;
        int x,y;
        OLinMatrixkNode* right;
        OLinMatrixkNode* down;
    };
    struct OLinMatrix
    {
        OLinMatrixkNode** RowHead;
        OLinMatrixkNode** ColHead;
        int r,c,cnt;
    };
    OLinMatrix* createOLinMatrix(int r,int c)
    {
        OLinMatrix* ans=(OLinMatrix*)malloc(sizeof(OLinMatrix));
        ans->RowHead=new OLinMatrixkNode*[r+1];
        ans->ColHead=new OLinMatrixkNode*[c+1];
        for(int i=1;i<=r;i++)
            ans->RowHead[i]=NULL;
        for(int i=1;i<=c;i++)
            ans->ColHead[i]=NULL;
        ans->cnt=0;
        ans->r=r;
        ans->c=c;
        return ans;
    }
    
    OLinMatrixkNode* createOLinMatrixNonde(int r,int c,int v)
    {
        OLinMatrixkNode* ans=(OLinMatrixkNode*)malloc(sizeof(OLinMatrixkNode));
        ans->x=r;
        ans->y=c;
        ans->data=v;
        return ans;
    }
    void addElement(OLinMatrix* p,int r,int c,int v)
    {
        if(v==0)
            return;
    
        OLinMatrixkNode* newNode = createOLinMatrixNonde(r,c,v);
        if(p->RowHead[r]==NULL || p->RowHead[r]->y > c)
        {
            newNode->right=p->RowHead[r];
            p->RowHead[r]=newNode;
        }
        else 
        {
            OLinMatrixkNode* temp = p->RowHead[r];
            while( temp->right!=NULL && temp->right->y <= c)
                temp=temp->right;
            newNode->right=temp->right;
            temp->right=newNode;
        }
    
        if(p->ColHead[c]==NULL || p->ColHead[c]->x > r)
        {
            newNode->down=p->ColHead[c];
            p->ColHead[c]=newNode;
        }
        else 
        {
            OLinMatrixkNode* temp = p->ColHead[c];
            while( temp->down!=NULL && temp->down->x <= r)
                temp=temp->down;
            newNode->down=temp->down;
            temp->down=newNode;
        }
        p->cnt++;
    }
    
    void output(OLinMatrix* p)
    {
        for(int i=1;i<=p->r;i++)
        {
            OLinMatrixkNode* temp = p->RowHead[i];
            for(int j=1;j<=p->c;j++)
            {
                if(temp!=NULL && temp->y==j)
                {
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);//彰显非0元
                    cout<<std::left<<setw(3)<<temp->data;
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);//设置三色相加
                    temp=temp->right;
                }
                else
                {
                    cout<<std::left<<setw(3)<<0;
                }
            }
            cout<<endl;
        }
    }
    
    void main()
    {
        int r=7,c=12,cnt=15;
        OLinMatrix*  m= createOLinMatrix(r,c);
        bool v[100][100];
        memset(v,false,sizeof(100));
        for(int i=1;i<=cnt;i++)
        {
            int x=rand()%r+1,y=rand()%c+1,value=rand()%99+1;
            if(v[x][y])
            {
                addElement(m,x,y,value);
                cout<<x<<" "<<y<<" "<<value<<endl;
                v[x][y]=0;
            }
            else 
            {
                i--;
            }
        }
        output(m);
        cin>>r;
    }
  • 相关阅读:
    Faster-RCNN Pytorch实现的minibatch包装
    RuntimeError: cuda runtime error (10) : invalid device ordinal
    pip使用技巧
    Pytorch model saving and loading 模型保存和读取
    vs 附加包含目录不起作用
    微服务杂谈
    spring 学习笔记
    java 发送 http 请求
    PHP7 错误及异常机制
    Mac OS 下定制终端颜色
  • 原文地址:https://www.cnblogs.com/kbyd/p/3998622.html
Copyright © 2011-2022 走看看