配列実装の単一チェーンテーブル


配列実装の単一チェーンテーブル(c++)
大量のデータ(特に競合時)に直面して、構造体で実現されたチェーンテーブルを使用すると、newのノードは非常に遅く、構造体で実現されたチェーンテーブルが操作されるたびに、ノードとノードの間にポインタで連絡されるため、チェーンテーブルのノードを遍歴するたびに、最初から開始する必要があり、時間の複雑さはO(n)である..配列を使用してチェーンテーブルを実装する場合、配列実装の単一チェーンテーブルは、あるノードの値と次のノードを直接インデックスすることができるため、配列実装の単一チェーンテーブルの最大の利点は速い(挿入と削除操作はO(1)の時間的複雑さである)ことであり、結局配列の特徴はランダムアクセスである.
 1 #include <stdio.h>
 2 #include <iostream>
 3 using namespace std;
 4 const int N=100010;
 5 //                   *next new     
 6 //head         
 7 //e[i]    i  
 8 //ne[i]    i next2     
 9 //idex           
10 int  head,e[N],ne[N],idx;
11 void init()
12 {
     
13     head=-1;
14     idx=0;
15 }
16 void add_to_head(int x) //        
17 {
     
18     e[idx]=x;
19     ne[idx]=head;
20     head=idx;
21     idx++;
22 }
23 void add(int k,int x)//   X   k  
24 {
     
25     e[idx]=x;
26     ne[idx]=ne[k];
27     ne[k]=idx;
28     idx++;
29 }
30 void remove(int k)//    x     
31 {
     
32     ne[k]=ne[ne[k]];
33     //idx--;          ,         
34 }