m0_61817339 2022-04-17 19:42 采纳率: 50%
浏览 31
已结题

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

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

  • 写回答

1条回答 默认 最新

  • 陈年椰子 2022-04-17 20:30
    关注

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

    参考一下

    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()
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 已采纳回答 4月18日
  • 创建了问题 4月17日

悬赏问题

  • ¥15 CARSIM前车变道设置
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败