/******************************************Dynamic Sort*************************************************/
#include <string.h>
#include <stdio.h>
#include <malloc.h>
   5:  
/*定义int为ElemType类型*/
int ElemType;
   8:  
/*定义链表的结点类型*/
struct node {
/*数据域*/
/*指针域*/
  13: } LNode, *LinkList;
  14:  
/*创建一个长度为n的链表,并输入数据*/
int n)
  17: {
  18:     LinkList p, r, list = NULL;
  19:     ElemType e;
int i;
  21:  
for(i = 1; i <= n; i++)
  23:     {
, &e);
sizeof(LNode));
  26:         p->data = e;
  27:         p->next = NULL;
  28:  
if(!list)
  30:             list = p;
else
  32:             r->next = p;
  33:  
  34:         r = p;
  35:     }
  36:  
return list;
  38: }
  39:  
/*向链表中插入结点*/
void insertList(LinkList *list, LinkList q, ElemType e) {
  42:     LinkList p;
sizeof(LNode));
  44:     p->data = e;
  45:  
if(!*list) {
  47:         *list = p;
  48:         p->next = NULL;
  49:     }
else {
  51:         p->next = q->next;
  52:         q->next = p;
  53:     }
  54: }
  55:  
/*基于链表的冒泡排序算法*/
void Sort(LinkList q)
  58: {
  59:     LNode *p = q;
int t, i, j, k = 0;
  61:  
while(p) {
  63:         k++;
  64:         p = p->next;
  65:     }
  66:  
  67:     p = q;
  68:  
for(i = 0; i < k - 1; i++)
  70:     {
for(j = 0; j < k - i - 1; j++)
  72:         {
if(p->data > p->next->data)
  74:             {
  75:                 t = p->data;
  76:                 p->data = p->next->data;
  77:                 p->next->data = t;
  78:             }
  79:  
  80:             p = p->next;
  81:         }
  82:  
  83:         p = q;
  84:     }
  85:  
  86: }
  87:  
/*打印出排序后的新链表中的内容*/
void Print(LinkList q)
  90: {
while(q)
  92:     {
, q->data);
  94:         q = q->next;
  95:     }
  96: }
  97:  
/*主函数*/
int main()
 100: {
 101:     ElemType e;
/*定义一个链表l*/
);
/*创建一个链表结点,q和l指向该结点*/
 105:  
, &e);
 107:  
/*循环地输入数据,同时插入新生成的结点*/
 109:     {
 110:         insertList(&l, q, e) ;
 111:         q = q->next;
, &e);
 113:     }
 114:  
 115:  
 116:     Sort(l);
 117:     Print(l);
 118: }
 119:  

相关文章: