@@ -30,6 +30,8 @@ public:
30
30
bool delete_my_new(Element * elem);
31
31
Element* GetHead();
32
32
Element* GetTail();
33
+ int GetHeadValue();
34
+ int GetTailValue();
33
35
private:
34
36
Element* head = nullptr;
35
37
Element* tail = nullptr;
@@ -44,6 +46,20 @@ Element* my_list::GetTail(){
44
46
return this->tail;
45
47
}
46
48
49
+ int my_list::GetHeadValue (){
50
+ if(this->head != nullptr){
51
+ return this->head->data;
52
+ }
53
+ return -1;
54
+ }
55
+
56
+ int my_list::GetTailValue (){
57
+ if(this->tail != nullptr){
58
+ return this->tail->data;
59
+ }
60
+ return -1;
61
+ }
62
+
47
63
Element* my_list::GetBeforeEndElement (){
48
64
if(this->head == nullptr || this->head == this->tail){
49
65
return nullptr;
@@ -92,11 +108,14 @@ bool my_list::delete_my(Element *elem){
92
108
}
93
109
94
110
if(elem == this->head){
95
- this->head = this->head->next;
96
111
if(this->head->next == nullptr){
112
+ this->head = nullptr;
97
113
this->tail = nullptr;
98
114
}
99
- delete elem;
115
+ else{
116
+ this->head = this->head->next;
117
+ delete(elem);
118
+ }
100
119
return true;
101
120
}
102
121
@@ -105,7 +124,13 @@ bool my_list::delete_my(Element *elem){
105
124
if(beforeEnd != nullptr){
106
125
beforeEnd->next = nullptr;
107
126
this->tail = beforeEnd;
108
- delete elem;
127
+ delete(elem);
128
+ return true;
129
+ }
130
+ else{
131
+ this->head = nullptr;
132
+ this->tail = nullptr;
133
+ delete(elem);
109
134
return true;
110
135
}
111
136
}
@@ -123,6 +148,7 @@ bool my_list::delete_my(Element *elem){
123
148
return false;
124
149
};
125
150
151
+ // 向头部插入结点
126
152
bool my_list::insertAfter(Element * elem, int data){
127
153
if(elem == NULL){
128
154
Element* e = new Element;
@@ -133,37 +159,40 @@ bool my_list::insertAfter(Element *elem, int data){
133
159
this->tail = e;
134
160
return true;
135
161
}
162
+ else{
163
+ this->head = e;
164
+ return true;
165
+ }
136
166
}
137
167
return false;
138
168
}
139
169
140
170
int main(){
141
171
my_list myList;
142
-
143
- Element* e1 = new Element;
144
- e1->data = 10;
145
- e1->next = nullptr;
146
-
147
- Element* e2 = new Element;
148
- e2->data = 20;
149
- e2->next = nullptr;
150
-
151
- myList.insertAfter(nullptr, 5);
152
172
myList.insertAfter(nullptr, 1);
173
+ myList.insertAfter(nullptr, 2);
174
+ myList.insertAfter(nullptr, 3);
175
+ myList.insertAfter(nullptr, 4);
176
+ std::cout << myList.GetHeadValue() << std::endl;
177
+ std::cout << myList.GetTailValue() << std::endl;
153
178
154
179
// 删除第一个节点
155
180
if (myList.delete_my(myList.GetHead())) {
156
181
std::cout << "Deleted first element." << std::endl;
157
182
} else {
158
- std::cout << "Failed to delete element ." << std::endl;
183
+ std::cout << "Failed to delete element1 ." << std::endl;
159
184
}
185
+ std::cout << myList.GetHeadValue() << std::endl;
186
+ std::cout << myList.GetTailValue() << std::endl;
160
187
161
188
// 删除最后一个节点
162
189
if (myList.delete_my(myList.GetTail())) {
163
190
std::cout << "Deleted last element." << std::endl;
164
191
} else {
165
- std::cout << "Failed to delete element ." << std::endl;
192
+ std::cout << "Failed to delete element2 ." << std::endl;
166
193
}
194
+ std::cout << myList.GetHeadValue() << std::endl;
195
+ std::cout << myList.GetTailValue() << std::endl;
167
196
168
197
return 0;
169
198
}
0 commit comments