|
3驿站币
void sort(NodePtr h) //排序算法
{
NodePtr pr, p, q, s;
q = h->next; //q指向第1数据结点
h->next = NULL;//断开附加头结点,成为空链表(即升序链表初态)
while (q) //依次摘下q所指结点,插入升序链表
{
s = q; //s为第一个节点
q = q->next;//q为第二个节点
pr = h; //空的头结点
p = h->next; //开始寻找插入位置p = NULL
while (p&&p->data < s->data)
{
pr = p;
p = p->next;
}
pr->next = s;// 第一个节点为s
s->next = p;//插入s所指结点到升序链表中 p为以pr头节点的第二个节点
}
}
链表的排序算法 老师PPT里的看不懂
第一次进循环的时候p = NULL 对吗? pr ->s->p ;pr= p;只是把p指向的数据域赋值给pr对吗? |
上一篇: 关于链表的小问题下一篇: new 申请内存失败
|