.[題目分析] 本題要求將鏈表中數據域值最小的結點移到鏈表的最前面首先要查找最小值結點將其移到鏈表最前面實質上是將該結點從鏈表上摘下(不是刪除並回收空間)再插入到鏈表的最前面
LinkedList delinsert(LinkedList list)∥list是非空線性鏈表鏈結點結構是(datalink)data是數據域link是鏈域本算法將鏈表中數據域值最小的那個結點移到鏈表的最前面
{p=list>link;∥p是鏈表的工作指針
pre=list;∥pre指向鏈表中數據域最小值結點的前驅
q=p;∥q指向數據域最小值結點初始假定是第一結點
while (p>link!=null)
{if(p>link>data<q>data){pre=p;q=p>link;}∥找到新的最小值結點;
p=p>link;
}
if (q!=list>link)∥若最小值是第一元素結點則不需再操作
{pre>link=q>link;∥將最小值結點從鏈表上摘下;
q>link= list>link;∥將q結點插到鏈表最前面
list>link=q;
}
}∥算法結束
[算法討論] 算法中假定list帶有頭結點否則插入操作變為q>link=list;list=q
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/23343.html