⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 7.4creat.cpp

📁 矩阵的一些算法应用
💻 CPP
字号:
#include<iostream.h>
#include "..\.\data_structure.h"



void Creat()                         //建立稀疏矩阵的十字链表
{
  int n,m,r,p,i;
  Node* x;
  Node* hdnode[10];
  cout<<"input n,m,r:"<<endl;        //读入n,m,r,代表矩阵的行数,列数和非零个数
  cin>>n>>m>>r;
  if(m>n)
    p=m;
  else
    p=n;
  for(i=0;i<=p;i++)            //为行和列取得p个表头节点,并初始化,节点的value域指向其本身
  {  x=new Node;
     hdnode[i]=x;
     x->row=0;x->col=0;
     x->right=0;x->value=x;
  }
  int current_row=1;                  //current_row指示当前行
  Node* last=hdnode[1];               //last指示当前行最后一个节点
  for(i=1;i<=r;i++)                   //读入三元组,产生节点
  {
    int rrow,ccol,val;
    cout<<"please enter row,col,value:"<<endl;
    cin>>rrow;
    cin>>ccol;
    cin>>val;
    if(rrow>current_row)                     //当前行完成,关闭它,开始另一行
    {
      last->right=hdnode[current_row];
      current_row=rrow;
      last=hdnode[rrow];
    }
    x=new Node;                               //产生新节点
    x->row=rrow; x->col=ccol; x->value=(Node*)val;     //将三元组存入新节点
    last->right=x; last=x;                     //连入行表
    (hdnode[ccol]->value)->down=x;             //连入列表
    hdnode[ccol]->value=x;                     //利用value指向该列的最后一个节点
  }
  if(r!=0)                                     //关闭最后一行
    last->right=hdnode[current_row];
  for(i=1;i<=m;i++)                            //关闭所有的列
    (hdnode[i]->value)->down=hdnode[i];
  hdnode[0]->row=n;                            //存入头节点信息
  hdnode[0]->col=m;
  for(i=0;i<=p-1;i++)                          //建立通过value域相连的头节点表
    hdnode[i]->value=hdnode[i+1];
  if(p==0)
     hdnode[0]->value=hdnode[0];
  else
  {  hdnode[p]->value=hdnode[0];
     hdnode[0]->value=hdnode[1];
  }
}
void Delete(Node* a)
{


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -