原理借鉴率辉老师的2020天勤数据结构高分笔记P119-P121部分,代码部分未经大量数据验证可能存在bug,欢迎大家指正。
#include <bits/stdc++.h>
using namespace std;
/*
* 普通节点
*/
typedef struct Node {
int r, c, v;
Node *right, *down;
} Node;
/*
* 头节点
*/
typedef struct LeaderNode {
int rnum, cnum, vnum;
Node *right, *down;
} LeaderNode;
/*
* 初始化
*/
void leaderNodeinit(LeaderNode &lnode, int r, int c)
{
lnode.rnum = r;
lnode.cnum = c;
lnode.vnum = 0;
lnode.down = (Node*)malloc(sizeof(Node)*r);
for (int i = 0; i < r; i++) {
lnode.down[i].c = lnode.down[i].r = -1;
lnode.down[i].down = lnode.down[i].right = NULL;
}
lnode.right = (Node*)malloc(sizeof(Node)*c);
for (int i = 0; i < c; i++) {
lnode.right[i].c = lnode.right[i].r = -1;
lnode.right[i].down = lnode.right[i].right = NULL;
}
}
/*
* 插入一个非0节点
*/
void insertNode(LeaderNode &lnode, int r, int c,