#include <stdio.h> typedef struct listnode { int f; struct listnode *next; } ListNode; ListNode *sort(ListNode *head) { ListNode *p,*p1,*p2,*p3; ListNode h, t; if (head == NULL) return NULL; h.next=head; p=&h; while (p->next!=NULL) { p=p->next; } p=p->next=&t; while (p!=h.next) { p3=&h; p1=p3->next; p2=p1->next; while (p2!=p) { if ((p1->f)>(p2->f)) { p1->next=p2->next; p2->next=p1; p3->next=p2; p3=p2; p2=p1->next; } else { p3=p1; p1=p2; p2=p2->next; } } p=p1; } while (p->next!=&t) { p=p->next; } p->next=NULL; return h.next; } int main() { ListNode h,j,k,l; h.next=&j; h.f=3; j.next=&k; j.f=5; k.next=&l; k.f=1; l.next=NULL; l.f=7; ListNode* p = sort(&h); while (p != NULL) { printf("%d ", p->f); p=p->next; } printf("\n"); return 0; }
void sort1(ListNode *head) { ListNode *p, *q, *pt; p = head; q = p->next; while(p->next != NULL) { while(q->next != NULL) { if (p->next->f > q->next->f) { pt = p->next; p->next = q->next; q->next = p->next->next; p->next->next = pt; } else q = q->next; } p = p->next; q = p->next; } }
时间: 2024-10-29 20:03:05