满意答案
mlujasd44
2013.10.11
采纳率:45% 等级:12
已帮助:4423人
以下程序把代码的前面数字去掉就可以
4 #include
5 #include
6 typedef struct node //节点声明
7 {
8 int Data;
9 struct node* Next;
10 }Node;
11
12 typedef Node* PNode; //将节点Node* 用PNode代替
13
14 typedef struct //链表LinkList的定义
15 {
16 PNode Head;
17 PNode Tail;
18 int Size;
19 }LinkList;
3 void CreateList(LinkList *ls) //链表初始化
4 {
5 ls->Head = NULL;
6 ls->Tail = NULL;
7 ls->Size = 0;
8 }
10 int AppendNode(LinkList *ls, int Data) //增加链表节点
11 {
12 PNode newnode;
13 newnode = (PNode)malloc(sizeof(Node));
14 newnode->Data = Data;
15 newnode->Next = NULL;
16 if(ls->Head == NULL)
17 {
18 ls->Head = newnode;
19 ls->Tail = newnode;
20 }
21 else
22 {
23 ls->Tail->Next = newnode;
24 ls->Tail = newnode;
25 }
26 ls->Size++;
27 }
30 void DestroyList(LinkList *ls) //释放链表
31 {
32 PNode tmpnode = ls->Head;
33 while(tmpnode)
34 {
35 tmpnode = tmpnode->Next;
36 free(ls->Head);
37 ls->Head = tmpnode;
38 }
39 ls->Head = NULL;
40 ls->Tail = NULL;
41 ls->Size = 0;
42 }
44 void PrintList(LinkList *ls) //打印链表
45 {
46 PNode tmpnode;
47 int i=0;
48 tmpnode = ls->Head;
49 printf("\t\t");
50 while(tmpnode != NULL)
51 {
52 if(i%5 == 0)
53 {
54 putchar('\n');
55 printf("\t\t");
56 }
57 printf("\t%-d",tmpnode->Data);
58 tmpnode = tmpnode->Next;
59 i++;
60 }
61 putchar('\n');
62 }
140 int SortNode(LinkList *ls) //根据节点中的数据Data,升序排序
141 {
142 PNode tmpnode,endnode,newnode;
143 int tmp;
144 endnode = ls->Tail;
145 while(endnode != ls->Head)
146 {
147 tmpnode = ls->Head;
148 while(tmpnode != endnode)
149 {
150 if(tmpnode->Data > tmpnode->Next->Data)
151 {
152 tmp = tmpnode->Data;
153 tmpnode->Data = tmpnode->Next->Data;
154 tmpnode->Next->Data = tmp;
155 }
156 newnode = tmpnode;
157 tmpnode = tmpnode->Next;
158 }
159 endnode = newnode;
160 }
161 return 0;
162 }
2 int main() //主函数
3 {
4 LinkList ls;
5 int i,n,k,p;
6 CreateList(&ls);
7 srand(time(NULL)); //产生随机数的种子
8 for(i=0;i<20;i++)
9 {
10 AppendNode(&ls,rand()%100); //生成节点,节点的Data数据为0~99的随机数
11 }
12 printf("输出一个随机链表:\n");
13 PrintList(&ls);
14 putchar('\n');
30 printf("经过排序后的链表为:\n");
31 SortNode(&ls);
32 PrintList(&ls);
36 DestroyList(&ls);
37 }
00分享举报