算法
-
链表
有一个带头节点的单链表,设计一个算法使其元素递增有序。- 使用直接插入算法,是该题正确的做法。
/*思路:直接插入*/ void IncreaseLinkList(LinkList &L) { LNode *p,*r,*pre;//*r用来存放待遍历的元素!!! L->next=NULL; p=L->next;//物理结构上的连接 下面还要继续使用p与r r=p->next;//防止链表断裂 p=r;//往后移动一位 //现在L链表中,只有p这一个结点,p既是第一个结点也是最后一个结点。r是剩下的链表中的第一个元素 //下面进行比较插入 while(p!=null) { r=p->next; pre=L;//有序表 while(pre->next!=null&&pre->next->data<p->data)//r中的值比第一个结点的值小 pre=pre->next;//循环结束的条件 到了链表结尾,当前链表中每一个值都比插入值小,或者就是找到那个位置了,在两个值中间。 p->next=pre->next;//如果当前p的值比l的第一个值大,直接插入!!! pre->next=p; p=r; } }