こんにちは。
私は今C++を勉強中なのですが、その一環として試しに二分ヒープを作成したところ、エラーが発生して詰まってしまいました。
エラーそのものの対処というよりは、その発生原因を知りたく質問致しました。
###発生している問題・エラーメッセージ
以下が発生したエラーです。
/home/...:6:5: error: expected unqualified-id before ‘delete’ int delete(int binaryHeap[], int value, int nodeNum); ^ /home/...:50:5: error: expected unqualified-id before ‘delete’ int delete(int binaryHeap[], int value, int nodeNum) ^
###該当のソースコード
以下がソースコードです。
C++
1#include <iostream> 2using namespace std; 3 4void breadthFirstSearch(int binaryTree[], int nodeNum); 5int insert(int binaryHeap[], int value, int nodeNum); 6int delete(int binaryHeap[], int value, int nodeNum); 7int search(int binaryHeap[], int value, int nodeNum, int index); 8 9void breadthFirstSearch(int binaryTree[], int nodeNum) 10{ 11 for (int i = 0; i < nodeNum; i++) { 12 cout << binaryTree[i] << " "; 13 } 14 cout << endl; 15} 16 17int insert(int binaryHeap[], int value, int nodeNum) 18{ 19 if (search(binaryHeap, value, nodeNum, 0) != -1) { 20 return 0; 21 } 22 binaryHeap[nodeNum] = value; 23 int i = nodeNum; 24 25 while (i > 0) { 26 if (binaryHeap[i] < binaryHeap[(i - 1) / 2]) { 27 binaryHeap[i] = binaryHeap[(i - 1) / 2]; 28 binaryHeap[(i - 1) / 2] = value; 29 i = (i - 1) / 2; 30 } 31 else { 32 return 1; 33 } 34 } 35 36 return 1; 37} 38 39int delete(int binaryHeap[], int value, int nodeNum) 40{ 41 int index = search(binaryHeap, value, nodeNum, 0); 42 if (index == -1) { 43 return 0; 44 } 45 46 binaryHeap[index] = binaryHeap[nodeNum - 1]; 47 while (2 * index + 1 < nodeNum - 1) { 48 int childIndex, childValue; 49 50 if (2 * index + 1 == nodeNum - 2) { 51 childIndex = 2 * index + 1; 52 childValue = binaryHeap[2 * index + 1]; 53 } 54 else { 55 if (binaryHeap[2 * index + 1] <= binaryHeap[2 * index + 2]) { 56 childIndex = 2 * index + 1; 57 childValue = binaryHeap[2 * index + 1]; 58 } 59 else { 60 childIndex = 2 * index + 2; 61 childValue = binaryHeap[2 * index + 2]; 62 } 63 } 64 65 if (binaryHeap[index] > childValue) { 66 binaryHeap[childIndex] = binaryHeap[index]; 67 binaryHeap[index] = childValue; 68 index = childIndex; 69 } 70 else { 71 return 1; 72 } 73 } 74 75 return 1; 76} 77 78int search(int binaryHeap[], int value, int nodeNum, int index) 79{ 80 if (nodeNum == 0) { 81 return -1; 82 } 83 84 if (binaryHeap[index] == value) { 85 return index; 86 } 87 88 else if (binaryHeap[index] > value) { 89 return -1; 90 } 91 92 else { 93 int leftResult = -1, rightResult = -1; 94 if (2 * index + 1 < nodeNum) { 95 leftResult = search(binaryHeap, value, nodeNum, 2 * index + 1); 96 } 97 if (2 * index + 2 < nodeNum) { 98 rightResult = search(binaryHeap, value, nodeNum, 2 * index + 2); 99 } 100 101 if (leftResult == -1 && rightResult == -1) { 102 return -1; 103 } 104 else if (leftResult != -1) { 105 return leftResult; 106 } 107 else { 108 return rightResult; 109 } 110 } 111}
###試したこと
自力で調べたところ、deleteという関数の名前が悪いのでは、という予測を致しました。
そこで、hogeという名前に変えたところ、件のエラーは発生しなくなりました。
ただ、結局何が原因だったのかが分かりません。
もし原因をご存知の方がいましたら、お教え下さい。
###補足
以下が実行環境です。
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0
Linux Mint 18 Sarah

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。