1 #include <iostream>
2 #include <string.h>
3 #include "sLinkList.h"
4 void IntTest()
5 {
6 std::cout<< "\n----------------------IntTest----------------------" << std::endl;
7 sLinkList<int> sList;
8 for (int i = 0; i < 10; ++i)
9 sList.Insert(i,i);
10 sList.Traverse();
11 std::cout << "---------ReMove---------" << std::endl;
12 sList.ReMove(0);
13 sList.Traverse();
14 std::cout << "---------Insert---------" << std::endl;
15 sList.Insert(0, 9999);
16 sList.Insert(3, 9999);
17 sList.Traverse();
18 std::cout << "---------Erase---------" << std::endl;
19 sList.Erase(9999);
20 sList.Traverse();
21 std::cout << "---------Search---------" << std::endl;
22 std::cout << sList.Search(8)<<std::endl;
23 std::cout << "---------Visit---------" << std::endl;
24 std::cout << sList.Visit(0) << std::endl;
25 std::cout << "---------Inverse---------" << std::endl;
26 sList.Inverse();
27 sList.Traverse();
28 }
29
30 void StringTest()
31 {
32 std::cout << "\n----------------------StringTest----------------------" << std::endl;
33 std::string sarr[] = { "aaaa", "bbb", "ccc", "ddd","eee", "fff", "ggg", "hhh","iii","jjj" };
34 sLinkList<std::string> sList;
35 for (int i = 0; i < 10; ++i)
36 sList.Insert(i, sarr[i]);
37 sList.Traverse();
38 std::cout << "---------ReMove---------" << std::endl;
39 sList.ReMove(0);
40 sList.Traverse();
41 std::cout << "---------Insert---------" << std::endl;
42 sList.Insert(0,"ggg");
43 sList.Insert(3, "ggg");
44 sList.Traverse();
45 std::cout << "---------Erase---------" << std::endl;
46 sList.Erase("ggg");
47 sList.Traverse();
48 std::cout << "---------Search---------" << std::endl;
49 std::cout << sList.Search("ddd") << std::endl;
50 std::cout << "---------Visit---------" << std::endl;
51 std::cout << sList.Visit(5) << std::endl;
52 std::cout << "---------Inverse---------" << std::endl;
53 sList.Inverse();
54 sList.Traverse();
55 }
56
57 struct MyStruct
58 {
59 int id;
60 char name[20];
61 void copy(const MyStruct& tmp)
62 {
63 id = tmp.id;
64 for (int i = 0; i < 20; ++i)
65 {
66 name[i] = tmp.name[i];
67 }
68 }
69 bool operator ==(const MyStruct&tmp) const
70 {
71 if (this->id == tmp.id)
72 {
73 for (int i = 0; i < 20; ++i)
74 {
75 if (this->name[i] != tmp.name[i])
76 return false;
77 }
78 }
79 else
80 {
81 return false;
82 }
83 return true;
84 }
85 MyStruct& operator =(const MyStruct& right)
86 {
87 copy(right);
88 return *this;
89 }
90
91 bool operator !=(const MyStruct& right)
92 {
93 if (right == *this)
94 return false;
95 return true;
96 }
97
98 friend std::ostream& operator <<(std::ostream &os,const MyStruct&self)
99 {
100 os << self.id << " " << self.name;
101 return os;
102 }
103 };
104 static MyStruct Stdudent[10] =
105 {
106 {1,"ge"},
107 {2,"sheng"},
108 {3,"lu"},
109 {4,"ge1"},
110 {5,"sheng1"},
111 {6,"lu1"},
112 {7,"ge2"},
113 {8,"sheng2"},
114 {9,"lu2"},
115 {10,"lu3"},
116 };
117
118 void ObjectTest()
119 {
120 std::cout << "\n----------------------ObjectTest----------------------" << std::endl;
121 sLinkList<MyStruct> sList;
122 for (int i = 0; i < 10; ++i)
123 sList.Insert(i, Stdudent[i]);
124 sList.Traverse();
125 std::cout << "---------ReMove---------" << std::endl;
126 sList.ReMove(0);
127 sList.Traverse();
128 std::cout << "---------Insert---------" << std::endl;
129 sList.Insert(0, Stdudent[7]);
130 sList.Insert(3, Stdudent[7]);
131 sList.Traverse();
132 std::cout << "---------Erase---------" << std::endl;
133 sList.Erase(Stdudent[7]);
134 sList.Traverse();
135 std::cout << "---------Search---------" << std::endl;
136 std::cout << sList.Search(Stdudent[5]) << std::endl;
137 std::cout << "---------Visit---------" << std::endl;
138 std::cout << sList.Visit(5) << std::endl;
139 std::cout << "---------Inverse---------" << std::endl;
140 sList.Inverse();
141 sList.Traverse();
142 }
143
144 int main()
145 {
146 IntTest();
147 StringTest();
148 ObjectTest();
149 return 0;
150 }