数据结构十字链表的问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 18:08:09
temp=(OLNode *)malloc(sizeof(OLNode));
在创建十字链表的时候 按任意次序输入非零元后有如下语句:
if(M.rhead[i]==NULL||M.rhead[i]->j>j) //条件为什么是这样的 按照常理我看不懂这个,理所当然后面的也不好理解
{
temp->right=M.rhead[i];
M.rhead[i]=temp;
}
else
{
p1=M.rhead[i];
while(p1->right&&p1->right->j<j)
p1=p1->right;
temp->right=p1->right;
p1->right=temp;
}
if(M.chead[j]==NULL||M.chead[j]->i>i)
{
temp->down=M.chead[j];
M.chead[j]=temp;
}
else
{
p1=M.chead[j];
while(p1->down&&p1->down->i<i)
p1=p1->down;
temp->down=p1->down;
p1->down=temp;
}
请了解的人指点一二

if(M.rhead[i]==NULL||M.rhead[i]->j>j) //

这句我来理解一下
ifM.rhead[i]== NULL 说明横向的链表还没有挂节点,对吧
那么
M.rhead[i]->j>j
按我的理解就是,横向链表中,最小的节点(最左)都比输入的值大

就插入到合适的地方