利用python实现将二维数组转化为双链表

原理不太懂,可以讲解一下吗,附代码最好了,一个节点分别存储行,列,值?

双链表 一般是指双向链表。 和二维数组没啥关系呀。
转为链表后,只能一个一个访问了, 双向链表只是多了一个可以从尾巴开始访问。
具体题目说一下。

参考一下

class Node:

    def __init__(self, data, right=None, down = None):
        self.data = data
        self.right = right
        self.down = down
        self.rows = 1
        self.cols = 1

    def __repr__(self):
        '''        用来定义Node的字符输出,
        print为输出data        '''
        return str(self.data)
    def Show(self):
        current_head = self
        col_i = 1
        while current_head != None:
            current_index = current_head
            print(current_index.data,end = "")
            col_i = 1
            while current_index.right != None:
                print(" - > ",end = "")
                current_index = current_index.right
                print(current_index.data, end="")
                col_i += 1
            print(" - > NULL")
            print("|     "*col_i)
            print("V     " * col_i)
            current_head = current_head.down
        print("NULL  "*col_i)





def c_DLL(arr):
    # 构造函数 , 返回链表头
    Node_lst = [[Node(x) for x in l] for l in arr]
    head = Node_lst[0][0]
    head.rows = len(arr)
    head.cols = len(arr[0])
    for i in range(len(Node_lst)-1):
        for j in range(len(Node_lst[i])-1):
            Node_lst[i][j].right = Node_lst[i][j+1]
            Node_lst[i][j].down = Node_lst[i+1][j]
        Node_lst[i][-1].down = Node_lst[i + 1][-1]
    i = -1
    for j in range(len(Node_lst[i]) - 1):
        Node_lst[i][j].right = Node_lst[i][j + 1]

    return head


val_2DMatrix = [[1,2,3],[4,5,6],[7,8,9]]
head = c_DLL(val_2DMatrix)
head.Show()