*qbf=NULL;//是从大到小排序)结点和链表中第一个结点交换(利用指针实现);然后,从链表中第二个结点开始遍历链for(p = h ; p->next!=NULL; pbf = p, p = p->next)//表,找出关键值最大的结点和链表中第二个结点交换……
同时还需要 pre 用于在有序链表中扫描寻找合适插入位置。 单向链表插入排序步骤 单向链表插入排序的大致步骤为: (1)先将单个节点 node 的next 置NULL,形成初始有序链表;(2)pre 在有序链表中扫描,nex 标记下一个待排序节点,当 pre 的next 指向的节点大于等于 node->data 时停止;(3)在有序链表中插入节点 ...
算法思想到处都可以找到,程序代码还是得自己去写,自己亲手尝试过,才更理解其中的原理。C和C++差别不大,算法是相同的。加油吧!
//函数fun功能是将带头节点的单向链表结点域中的数据从小到大排序。 //相当于数组的冒泡排序。 1#include <stdio.h>2#include <stdlib.h>3#defineN 64typedefstructnode {5intdata;6structnode *next;7} NODE;8voidfun(NODE *h)9{ NODE *p, *q;intt;10/***found***/11p =h->next;//头结点的指...
f= h->next;//f指向旧链的第一个节点,即等待在新链中“安家落户”(插入)的节点h->next = NULL;//将原链的第一个节点单拿出来作为新链(待插入链)的第一个节点,默认此节点是关键值最大的节点while(f!=NULL)//当f=NULL,旧链中的节点都插入到了新链,排序完成{for(t = f, q = h; (q != NU...