//函数fun功能是将带头节点的单向链表结点域中的数据从小到大排序。
//相当于数组的冒泡排序。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #define N 6 4 typedef struct node { 5 int data; 6 struct node *next; 7 } NODE; 8 void fun(NODE *h) 9 { NODE *p, *q; int t; 10 /**********found**********/ 11 p = h->next;//头结点的指向赋值 12 while (p) { 13 /**********found**********/ 14 q = p->next ; 15 while (q) { 16 /**********found**********/ 17 if (p->data > q->data) 18 { t = p->data; p->data = q->data; q->data = t; } 19 q = q->next;//相当于数组第一个数与之后所有数进行一次比较。 20 } 21 p = p->next; 22 } 23 } 24 NODE *creatlist(int a[]) 25 { NODE *h,*p,*q; int i; 26 h = (NODE *)malloc(sizeof(NODE)); 27 h->next = NULL; 28 for(i=0; i<N; i++) 29 { q=(NODE *)malloc(sizeof(NODE)); 30 q->data=a[i]; 31 q->next = NULL; 32 if (h->next == NULL) h->next = p = q; 33 else { p->next = q; p = q; }