0%
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| ''' 广义表generalized list 线性表n个元素都是单元素。 广义表中,元素可以是单元素也可以是 另一个广义表。
多重链表 链表中的节点可能同时隶属于多个链表。 多重链表节点的指针有多个,如我们定义一个next,和一个sublist,一个node对应两个指针。 但是有两个指针域不一定是多重链表,如双向链表不是多重链表。 树和图都可能用到多重链表。
列子: 表示矩阵。 二维数组表示的缺点:1。数组大小需要事先确定。2。对于零多的稀疏矩阵,浪费空间。 十字链表存储稀疏矩阵: 1、只存储非零项,非零项要素 Term(row,col,value) 2、通过两个指针域,把同行row、同列col,串起来。 通过行指针域形成双向链表闭环,列指针域形成双向链表闭环,两个闭环十字交叉。 两种结构 Head、Term, Term(row,col,value)又一个特殊Term节点在左上角,表明多少行多少列非空,一共几个非空term节点。 Head 是行的头节点,或者列的头节点。
最终效果是:(这里是在方便表示并非字典或者元组的意思。) Term{指针:(down,right),value:(row,col,value)} Head{指针:(down,right,next)} #next是head之间连接用,right、down用来 和非零项形成指针闭环。 head和term区别在 next和value,所以用 tag{指针:(down,right),uregion:(、、、)} 来拟合两种节点为一种节点的统一表示方法。
'''
|