Skip to content

Commit cf0e978

Browse files
committed
Index Heap C++ bug fixed.
1 parent b9111e9 commit cf0e978

File tree

3 files changed

+36
-12
lines changed

3 files changed

+36
-12
lines changed

04-Heap/Course Code (C++)/09-Index-Heap-Advance/main.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,13 @@ class IndexMaxHeap{
100100
Item ret = data[indexes[1]];
101101
swap( indexes[1] , indexes[count] );
102102
reverse[indexes[count]] = 0;
103-
reverse[indexes[1]] = 1;
104103
count--;
105-
shiftDown(1);
104+
105+
if(count){
106+
reverse[indexes[1]] = 1;
107+
shiftDown(1);
108+
}
109+
106110
return ret;
107111
}
108112

@@ -113,9 +117,13 @@ class IndexMaxHeap{
113117
int ret = indexes[1] - 1;
114118
swap( indexes[1] , indexes[count] );
115119
reverse[indexes[count]] = 0;
116-
reverse[indexes[1]] = 1;
117120
count--;
118-
shiftDown(1);
121+
122+
if(count) {
123+
reverse[indexes[1]] = 1;
124+
shiftDown(1);
125+
}
126+
119127
return ret;
120128
}
121129

04-Heap/Course Code (C++)/Chapter-04-Completed-Code/IndexMaxHeap.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,13 @@ class IndexMaxHeap{
106106
Item ret = data[indexes[1]];
107107
swap( indexes[1] , indexes[count] );
108108
reverse[indexes[count]] = 0;
109-
reverse[indexes[1]] = 1;
110109
count--;
111-
shiftDown(1);
110+
111+
if(count){
112+
reverse[indexes[1]] = 1;
113+
shiftDown(1);
114+
}
115+
112116
return ret;
113117
}
114118

@@ -119,9 +123,13 @@ class IndexMaxHeap{
119123
int ret = indexes[1] - 1;
120124
swap( indexes[1] , indexes[count] );
121125
reverse[indexes[count]] = 0;
122-
reverse[indexes[1]] = 1;
123126
count--;
124-
shiftDown(1);
127+
128+
if(count){
129+
reverse[indexes[1]] = 1;
130+
shiftDown(1);
131+
}
132+
125133
return ret;
126134
}
127135

04-Heap/Course Code (C++)/Optional-3-Index-Min-Heap/IndexMinHeap.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,13 @@ class IndexMinHeap{
104104
Item ret = data[indexes[1]];
105105
swap( indexes[1] , indexes[count] );
106106
reverse[indexes[count]] = 0;
107-
reverse[indexes[1]] = 1;
108107
count--;
109-
shiftDown(1);
108+
109+
if(count){
110+
reverse[indexes[1]] = 1;
111+
shiftDown(1);
112+
}
113+
110114
return ret;
111115
}
112116

@@ -117,9 +121,13 @@ class IndexMinHeap{
117121
int ret = indexes[1] - 1;
118122
swap( indexes[1] , indexes[count] );
119123
reverse[indexes[count]] = 0;
120-
reverse[indexes[1]] = 1;
121124
count--;
122-
shiftDown(1);
125+
126+
if(count){
127+
reverse[indexes[1]] = 1;
128+
shiftDown(1);
129+
}
130+
123131
return ret;
124132
}
125133

0 commit comments

Comments
 (0)