File tree Expand file tree Collapse file tree 3 files changed +36
-12
lines changed
04-Heap/Course Code (C++)
Chapter-04-Completed-Code
Optional-3-Index-Min-Heap Expand file tree Collapse file tree 3 files changed +36
-12
lines changed Original file line number Diff line number Diff line change @@ -100,9 +100,13 @@ class IndexMaxHeap{
100
100
Item ret = data[indexes[1 ]];
101
101
swap ( indexes[1 ] , indexes[count] );
102
102
reverse[indexes[count]] = 0 ;
103
- reverse[indexes[1 ]] = 1 ;
104
103
count--;
105
- shiftDown (1 );
104
+
105
+ if (count){
106
+ reverse[indexes[1 ]] = 1 ;
107
+ shiftDown (1 );
108
+ }
109
+
106
110
return ret;
107
111
}
108
112
@@ -113,9 +117,13 @@ class IndexMaxHeap{
113
117
int ret = indexes[1 ] - 1 ;
114
118
swap ( indexes[1 ] , indexes[count] );
115
119
reverse[indexes[count]] = 0 ;
116
- reverse[indexes[1 ]] = 1 ;
117
120
count--;
118
- shiftDown (1 );
121
+
122
+ if (count) {
123
+ reverse[indexes[1 ]] = 1 ;
124
+ shiftDown (1 );
125
+ }
126
+
119
127
return ret;
120
128
}
121
129
Original file line number Diff line number Diff line change @@ -106,9 +106,13 @@ class IndexMaxHeap{
106
106
Item ret = data[indexes[1 ]];
107
107
swap ( indexes[1 ] , indexes[count] );
108
108
reverse[indexes[count]] = 0 ;
109
- reverse[indexes[1 ]] = 1 ;
110
109
count--;
111
- shiftDown (1 );
110
+
111
+ if (count){
112
+ reverse[indexes[1 ]] = 1 ;
113
+ shiftDown (1 );
114
+ }
115
+
112
116
return ret;
113
117
}
114
118
@@ -119,9 +123,13 @@ class IndexMaxHeap{
119
123
int ret = indexes[1 ] - 1 ;
120
124
swap ( indexes[1 ] , indexes[count] );
121
125
reverse[indexes[count]] = 0 ;
122
- reverse[indexes[1 ]] = 1 ;
123
126
count--;
124
- shiftDown (1 );
127
+
128
+ if (count){
129
+ reverse[indexes[1 ]] = 1 ;
130
+ shiftDown (1 );
131
+ }
132
+
125
133
return ret;
126
134
}
127
135
Original file line number Diff line number Diff line change @@ -104,9 +104,13 @@ class IndexMinHeap{
104
104
Item ret = data[indexes[1 ]];
105
105
swap ( indexes[1 ] , indexes[count] );
106
106
reverse[indexes[count]] = 0 ;
107
- reverse[indexes[1 ]] = 1 ;
108
107
count--;
109
- shiftDown (1 );
108
+
109
+ if (count){
110
+ reverse[indexes[1 ]] = 1 ;
111
+ shiftDown (1 );
112
+ }
113
+
110
114
return ret;
111
115
}
112
116
@@ -117,9 +121,13 @@ class IndexMinHeap{
117
121
int ret = indexes[1 ] - 1 ;
118
122
swap ( indexes[1 ] , indexes[count] );
119
123
reverse[indexes[count]] = 0 ;
120
- reverse[indexes[1 ]] = 1 ;
121
124
count--;
122
- shiftDown (1 );
125
+
126
+ if (count){
127
+ reverse[indexes[1 ]] = 1 ;
128
+ shiftDown (1 );
129
+ }
130
+
123
131
return ret;
124
132
}
125
133
You can’t perform that action at this time.
0 commit comments