typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node *next;
}Node,*LinkList;
void insert_sort(LinkList *p, LinkList *new){
//创建新链表头结点
*new = (Node *)malloc(sizeof(Node));
(*new)->next = NULL;
Node *q = (*p)->next;
while(q){
Node *loc,*pre;
loc = (*new)->next;
if((*new)->next == NULL || loc->data > q->data){
Node *s =(Node *)malloc(sizeof(Node));
s->data = q->data;
s->next = (*new)->next;
(*new)->next = s;
}
else{
pre = loc->next;
//loc指向当前节点
//pre指向后一个节点
while (pre && pre->data < q->data)
{
loc = pre;
pre = pre->next;
}
Node *s =(Node *)malloc(sizeof(Node));
s->data = q->data;
s->next = pre;
loc->next = s;
}
q = q->next;
}
}
//排序后的结果保存在new链表中
链式存储的直接插入排序
最新推荐文章于 2022-09-26 20:38:44 发布