/******************************************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: