私はこれで2か月間立ち往生しており、家庭教師とインターネットを試しました. 私が学んだことはすべて窓からゴミ箱に飛んでいるほど長い間悪化していると思います.
スキップ リスト ノードを宣言して使用したい。ノード配列を初期化してアクセスする方法がわかりません。ノードは配列をすべて NULL に初期化すると思いますが、ノード配列のインデックス [0] をその前のノード インデックス [0] を指すように設定できないのはなぜですか?
これが私のノードです:
struct node
{
int number;
node **next;
node(int &number, int level)
{
next = new node*[level];
for(int i = 0; i<level;i++)
next[i] = NULL;
this->number = number;
}
};
リストの構造体はありません。メインで組み立てているだけです
int main(){
node *head = NULL; //create the head sentinel
node *tail = NULL; //create the tail sentinel
char choice;
int number;
do{
choice = menu();
switch(choice){
case '1': cout<< "Please enter a number: ";
cin>> number;
insert(head, tail, number);
break;
次に、headSentinels を最初のノードにアタッチします。
void insertAsFirstElement(node *&head, node *&tail, int number)
{
node *temp = new node(number, 3);
temp->number = number;
head->next[0] = temp;
temp->next[0] = tail;
}
メインでノードを使用する方法を理解できれば、残りのスキップ リストを理解できます。何かが私を縛っています、そしてそれはおそらく簡単です。
プログラムをコンパイルできますが、数値を挿入しようとすると、セグメンテーション エラーが発生します。
実際のスキップリストを作成する前に、最初に配列 [0] でリンクされたリストを組み立てたいだけです