问答题
对单链表中元素按插入方法排序的C语言描述算法如下,其中L为链表头结点指针。请填充算法中标出的空白处,完成其功能。
typedef struct node
{int data; struct node*next;
}linknode,*link;
voidInsertsort(1ink L)
{link P,q,r,u;
p=L一>next;(1);
while((2) )
{r=L; q=n->next;
while((3) &&q一>data<=p一>data){r=q; q=q一>next;}
u=p一>nextj (4);(5);p=u;
}
}【北京科技大学2001二(10分)】
【正确答案】正确答案:(1)L一>next=null //置空链表,然后将原链表结点逐个插入有序表中 (2)p!--null //或p,当链表尚未到尾 (3)q!=p //查p结点在链表中的插入位置,这时q是工作指针 (4)p->next=r->next //或p一>next=q 苷p结点链入链表中 (5)r->next=p //r是q的前驱,u是下个待插入结点的指针
【答案解析】