forked from lxngoddess5321/C100
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path074.c
72 lines (71 loc) · 1.52 KB
/
074.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// 【程序74】
// 题目:连接两个链表。
// 1.程序分析:
// 2.程序源代码:
#include "stdlib.h"
#include "stdio.h"
struct list
{
int data;
struct list *next;
};
typedef struct list node;
typedef node *link;
link delete_node(link pointer, link tmp) {
if (tmp == NULL) /*delete first node*/
return pointer->next;
else {
if (tmp->next->next == NULL) /*delete last node*/
tmp->next = NULL;
else /*delete the other node*/
tmp->next = tmp->next->next;
return pointer;
}
}
void selection_sort(link pointer, int num) {
link tmp, btmp;
int i, min;
for (i = 0; i < num; i++) {
tmp = pointer;
min = tmp->data;
btmp = NULL;
while (tmp->next) {
if (min > tmp->next->data) {
min = tmp->next->data;
btmp = tmp;
}
tmp = tmp->next;
}
printf("\40: %d\n", min);
pointer = delete_node(pointer, btmp);
}
}
link create_list(int array[], int num) {
link tmp1, tmp2, pointer;
int i;
pointer = (link)malloc(sizeof(node));
pointer->data = array[0];
tmp1 = pointer;
for (i = 1; i < num; i++) {
tmp2 = (link)malloc(sizeof(node));
tmp2->next = NULL;
tmp2->data = array[i];
tmp1->next = tmp2;
tmp1 = tmp1->next;
}
return pointer;
}
link concatenate(link pointer1, link pointer2) {
link tmp;
tmp = pointer1;
while (tmp->next)
tmp = tmp->next;
tmp->next = pointer2;
return pointer1;
}
void main(void) {
int arr1[] = {3, 12, 8, 9, 11};
link ptr;
ptr = create_list(arr1, 5);
selection_sort(ptr, 5);
}