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

📄 matrix.curry

📁 编译原理课程设计之pp2语法分析程序
💻 CURRY
字号:
class Matrix {  // these methods are intended to be overridden by subclasses  // if only we had pure virtual/abstract methods in our language...  void Init() {}  void Set(int x, int y, int value) {}   int Get(int x, int y) {}  void PrintMatrix() {    int i;    int j;    for (i = 0; i < 10; i = i + 1) {      for (j = 0; j < 10; j = j + 1) 	   Print(Get(i,j), "\t");      Print("\n");    }  }  void SeedMatrix() {    int i;    int j;    for (i = 0; i < 5; i = i + 1)       for (j = 0; j < 5; j = j + 1) 	   Set(i,j, i+j);    Set(2,3,4);    Set(4,6,2);    Set(2,3,5);    Set(0,0,1);    Set(1,6,3);    Set(7,7,7);  }}// Matrix as an arrayclass DenseMatrix extends Matrix {  int[][] m;  void Init() {    int i;    int j;    // create mem    m = NewArray(10, int[]);    for (i = 0; i < 10; i = i +1)       m[i] = NewArray(10, int);    // set all to 0.    for (i = 0; i < 10; i = i + 1)       for (j = 0; j < 10; j = j + 1) 		m[i][j] = 0;  }  void Set(int x, int y, int value) {    m[x][y] = value;  }  int Get(int x, int y) {    return m[x][y];  }}class SparseItem {  int data;  int y;  SparseItem next;  void Init(int d, int y, SparseItem next) {    this.data = d;    this.y = y;    this.next = next;  }  SparseItem GetNext() { return next;}  int GetY() { return y;}  int GetData() { return data;}  void SetData(int val) { data = val;}  }// Matrix as linked listsclass SparseMatrix extends Matrix {  SparseItem[] m;  void Init() {    int i;    // create mem    m = NewArray(10, SparseItem);    for (i = 0; i < 10; i = i + 1)      m[i] = null;  }    SparseItem Find(int x, int y) {    SparseItem elem;    elem = m[x];    while (elem != null) {      if (elem.GetY() == y) {	return elem;      }      elem = elem.GetNext();    }    return null;  }    void Set(int x, int y, int value) {    SparseItem elem;    elem = Find(x,y);    if (elem != null) {      elem.SetData(value);    } else {      elem = New(SparseItem);      elem.Init(value, y, m[x]);      m[x] = elem;    }  }    int Get(int x, int y) {    SparseItem elem;    elem = Find(x,y);    if (elem != null) {      return elem.GetData();    } else {      return 0;    }  }}void main()  {  Matrix m;  Print("Dense Rep \n");  m = New(DenseMatrix);  m.Init();  m.SeedMatrix();  m.PrintMatrix();      Print("Sparse Rep \n");  m = New(SparseMatrix);  m.Init();  m.SeedMatrix();  m.PrintMatrix();}

⌨️ 快捷键说明

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