设计一个用链表表示的直接插入排序算法。

admin2014-12-25  33

问题 设计一个用链表表示的直接插入排序算法。

选项

答案 Void sort(dlklinkh) /*链表h采用带头结点的双循环链表*/ {pre=h一>next; while(p!=h) {P=pre一>next; /*P是有序表的末尾*/ q=P一>next; /*保存下一个插入元素*/ while((pre!=h)&&(P一>datadata)) pre=pre一>prior; /*从后往前找插入位置*/ if(pre!=P一>prior) {P一>prior一>next=P一>next; P一>next一>prior=P>prior;/*删除P*/ P一>next=pre一>next; pre一>next一>prior=p; P一>prior=pre; pre一>next=p; /*插入到pre之后*/ } p=q; } }

解析 本算法采用的存储结构是带头结点的双循环链表。首先找元素插入位置,然后把元素从原链表中删除,插入到相应的位置处。请注意双链表上插入和删除操作的步骤。
转载请注明原文地址:https://jikaoti.com/ti/TjLaFFFM
0

最新回复(0)