首页 > 代码库 > Insertion Sort List
Insertion Sort List
Sort a linked list using insertion sort.
#include<stdio.h> #include<stdlib.h> typedef struct ListNode { int val; struct ListNode *next; }ListNode; ListNode *insertionSortList(ListNode *head) { ListNode *p1,*p2,*p3,*p4,*p5; if(head==NULL || head->next==NULL) return head; for(p2=head,p1=head->next;p1!=NULL;){ for(p4=p3=head;p3!=p1;p3=p3->next){ if(p3->val>p1->val) break; p4=p3; } //printf("p3 %d,p1 %d\n",p3->val,p1->val); if(p3!=p1){ p5=p1->next; p1->next=p3; if(p3==head){ head=p1; } else{ p4->next=p1; } p2->next=p5; p1=p5; } else{ p2=p1; p1=p1->next; } } return head; } void main(){ ListNode *head,*p1,*p2; int n=0; head=NULL; p1=p2=(ListNode *)malloc(sizeof(ListNode)); scanf("%d",&p1->val); while(p1->val!=0){ n++; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(ListNode *)malloc(sizeof(ListNode)); scanf("%d",&p1->val); } p2->next=NULL; for(p1=head;p1!=NULL;p1=p1->next) printf("%d ",p1->val); printf("\n"); p1=insertionSortList(head); while(p1!=NULL){ printf("%d ",p1->val); p1=p1->next; } printf("\n"); }
Insertion Sort List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。