配列実装の単一チェーンテーブル
6035 ワード
配列実装の単一チェーンテーブル(c++)
大量のデータ(特に競合時)に直面して、構造体で実現されたチェーンテーブルを使用すると、newのノードは非常に遅く、構造体で実現されたチェーンテーブルが操作されるたびに、ノードとノードの間にポインタで連絡されるため、チェーンテーブルのノードを遍歴するたびに、最初から開始する必要があり、時間の複雑さはO(n)である..配列を使用してチェーンテーブルを実装する場合、配列実装の単一チェーンテーブルは、あるノードの値と次のノードを直接インデックスすることができるため、配列実装の単一チェーンテーブルの最大の利点は速い(挿入と削除操作はO(1)の時間的複雑さである)ことであり、結局配列の特徴はランダムアクセスである.
大量のデータ(特に競合時)に直面して、構造体で実現されたチェーンテーブルを使用すると、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 }