# include
# include
9 # define N
typedef结构节点{
,,int 数据;
,,结构节点*下;
} ElemSN;
ElemSN *创建(int [], int n) {,,
,,,,,,,,, int我;
,,,,,,* p ElemSN * h=零;
,,,,,,,(i=n - 1; i>=0;我——){
,,,,,,,,,,p=(ElemSN *) malloc (sizeof (ElemSN));
,,,,p→数据=https://www.yisu.com/zixun/a[我];
,,,,p→下=h;
,,,,h=p;
}
返回h;
,,}
空白printlink (ElemSN * h) {
,,,ElemSN * p;
,,(p=h; p, p=p→下)
,,printf (“% d \ n" p→数据),
,,}
, ElemSN * SelectSont (ElemSN * h) {
,,,ElemSN * p * q * pmin, * qmin, * h2, * t;//t为尾结点
h2=零;
, (h) {
,,,,,,(pmin=q=h, h p=?p, q=p, p=p→下){,,
,,,,,如果(pmin→data> p→数据){
,,,,,,,,,,pmin=p;
,,,, qmin=问;
,,,,,}
,,,,,}//循环出来,pmin指着最小值,问指最小值的前一结点
,,,,如果(pmin-h)
,,,,,qmin→下=pmin→下;
else ,//如果pmin不为头结点,断链挂链,pmin的指针域给NULL,如果为头结点,头指针后移,pmin的指针域给空
, h=h→下;
,,,,pmin→下=零;
如果(h2),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
h2=t=pmin;
else ,,,//h2为NULL,说明只有一个结点,h2, t, pmin在同一个结点,,否则,pmin结点挂在t结点上(尾插),t后移,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
t→下=pmin;
t=pmin,
,,,,},
返回h2;
,}
int主要(void) {
int [N]={9、8、7、6、5、4、3、2、1};
ElemSN *头;
,,,,头=创建(9);
=SelectSont头(头);
printlink(头),
}