リニアテーブルの静的リンク、ループチェーンテーブル、双方向チェーンテーブル

1756 ワード

単一リンクのテーブル全体の作成
    swift           ~          
  • ヘッド挿入法*L = (LinkList)malloc(sizeof(Node)) (*L)->next = NULL for(int i = 0;inext = rand()%100 +1 p ->next = (*L)->next; (*L)->next = p }
  • (外部のポインタが現在の最後の要素の位置を記録する.最後の要素を更新し続ける)r = *L for(int i =0 ;idata = 1 p ->next = r r = p } r->next = NULL
  • 単一チェーンテーブルのテーブル全体の削除
  • はp,q,
  • を宣言する
  • 最初のノードをp
  • に割り当てる.
  • ループqレコードp—>next,pを解放し,p=qは最後にヘッダノードのポインタドメインをNULL
  • とする.
    静的チェーンテーブル
    削除と削除操作の際にカーソルを変更するだけで、要素を移動する必要がなくなり、シーケンスストレージ構造で大量の要素を挿入および削除する欠点が改善されました.
    欠点:
  • 連続割当てによるテーブル長の特定が困難な問題を解決することができなかった
  • .
  • は、シーケンス記憶構造のランダムアクセスの特性
  • を失う.
    静的チェーンテーブルはポインタのない高度な言語設計のための単一リンク能力を実現する方法である.
    ループチェーンテーブル
    単一チェーンテーブルにおける端末ノードのポインタ端が空のポインタからヘッドノードを指すように変更されると、単一チェーンテーブル全体にリングが形成される.このような頭尾がつながっている構造をループチェーンテーブルと呼ぶ.
    2つのループチェーンテーブルを1つのループチェーンテーブルに結合
    //rearAのnextの指向p=rearA->nextを記録する.
    //rearAの末尾はrearBの最初のノードを指す.ヘッドノードではありません
    rearA->next = rearB->next->next;
    q = rearB->next;
    rearB->next = p ;
    free(q);
    にほうこうチェーンテーブル
    双方向チェーンテーブルは、単一チェーンテーブルの各ノードにおいて、その前駆ノードを指すポインタドメインを設定します.
    一方向チェーンテーブルには、ループチェーンテーブルが存在してもよい.双方向チェーンテーブルは、循環チェーンテーブルも存在することができる.
    双方向チェーンテーブルの挿入操作
  • 挿入要素の前駆および後続
  • を変更する.
  • 後継の前駆体
  • を変更する.
  • 前駆の後継
  • を変更する.
    s->prefix = p;
    s->next = p->next;
    p->next->prefix = s;
    p->next = s
    双方向ループチェーンテーブルの削除操作
  • p->prefix->next = p->next
  • p->next->prefix = p->prefix

  • まとめ
    双方向チェーンテーブルは、prefixポインタが多いため、挿入と削除には特に注意しなければならないため、単一チェーンテーブルでは複雑です.