為了鍛煉自己,寫了下面幾個函數。
(1)把一個unsigned int 轉換成字符型的IP
(2)鏈表插入元素,升序
1
#include <WinSock2.h>
2
#include <iostream>
3
#include <assert.h>
4
5
using namespace std;
6
7
void ChangeToIp(unsigned int dwData, char *pStr)
8

{
9
assert(NULL != pStr);
10
if (NULL != pStr)
11
{
12
size_t index = 0;
13
unsigned char *pCh = (unsigned char *)(&dwData);
14
for (size_t i = 0 ; i < 4 ; i++)
15
{
16
unsigned short int nData(pCh[i]);
17
pStr[index++] = (char)(nData / 100 + '0');
18
19
nData %= 100;
20
pStr[index++] = (char)(nData / 10 + '0');
21
22
pStr[index++] = (char)(nData % 10 + '0');
23
24
if(3 > i)
25
{
26
pStr[index++] = '.';
27
}
28
}
29
}
30
}
31
32
template<typename T>
33
struct Node
34

{
35
Node() : m_Data(T())
36
{
37
m_pNext = NULL;
38
}
39
40
T m_Data;
41
Node<T> *m_pNext;
42
};
43
44
template<typename T>
45
void InsertNode(Node<T> *pHead, const T &value)
46

{
47
assert(NULL != pHead);
48
if (NULL != pHead)
49
{
50
if(NULL != pHead->m_pNext)//除了頭結點還有其他結點
51
{
52
while(NULL != pHead->m_pNext && pHead->m_pNext->m_Data < value)
53
{
54
pHead = pHead->m_pNext;
55
}
56
}
57
else //只有頭結點
58
{
59
;
60
}
61
62
Node<T> *pTemp = new Node<T>;
63
pTemp->m_Data = value;
64
pTemp->m_pNext = pHead->m_pNext;
65
pHead->m_pNext = pTemp;
66
}
67
}
68
69
template<typename T>
70
void PrintLinkList(Node<T> *pHead)
71

{
72
assert(NULL != pHead);
73
if (NULL != pHead)
74
{
75
pHead = pHead->m_pNext;
76
while(NULL != pHead)
77
{
78
cout<< pHead->m_Data <<endl;
79
pHead = pHead->m_pNext;
80
}
81
}
82
}
83
84
template<typename T>
85
void ReleaseLinkList(Node<T> *pHead)
86

{
87
assert(NULL != pHead);
88
if (NULL != pHead)
89
{
90
Node<T> *pNext = pHead->m_pNext;
91
delete pHead;
92
while(NULL != pNext)
93
{
94
pHead = pNext;
95
pNext = pHead->m_pNext;
96
delete pHead;
97
}
98
}
99
}
100
101
void main()
102

{
103
Node<int> *pHead = new Node<int>;
104
InsertNode(pHead, -1);
105
InsertNode(pHead, -2);
106
InsertNode(pHead, 8);
107
InsertNode(pHead, 34);
108
InsertNode(pHead, 4);
109
110
PrintLinkList(pHead);
111
112
ReleaseLinkList(pHead);
113
}

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



72

73

74



75

76

77



78

79

80

81

82

83

84

85

86



87

88

89



90

91

92

93



94

95

96

97

98

99

100

101

102



103

104

105

106

107

108

109

110

111

112

113
