C言語データ構造-チェーンテーブル作成


1.接点構造
typedef int datatype;

typedef struct Node{

  datatype data;

  struct NODE *next;

}Node,*LinkList;

2.先頭に立たないピンの差し込み方
ノードを作成するたびに、ノードがヘッドノードになります.これにより、ヘッドノードが常に前方に移動し、特定のヘッドノードのないチェーンテーブルを作成できます.
最初に作成したノードは、チェーンテーブル全体の最上位に表示されるため、データの書き込みは逆順序になります.
注意:最初は、headをNULLに初期化します.
LinkList LinkListCreate(int n)
{
    int i;
    LinkList head;
    Node *p;
    head = NULL;
    for(;idata);
        p->next = head;
        head = p;
    }
}

3.先頭ノードでない末尾挿入によるチェーンテーブルの作成
ヘッダノードを指すポインタは移動できません.最後のノードを常に指すポインタrearを作成します.
LinkList LinkListCreate(int n)
{
    int n= 0;
    LinkList head;
    Node *p,*rear;
    rear = head = NULL;
    for(;idata);

        if(NULL == head)
        else rear->next = p;

        rear = p;
    }
   rear->next = NULL;
}

注:最後にチェーンテーブルの末尾をNULLに設定
4.ヘッド接点
ヘッダノードのデータドメインは、情報を格納することなく、ヘッダノードのポインタドメインは、1番目のノードを指すポインタ(すなわち、1番目の要素ノードの格納位置)を格納します.ヘッダノードの役割は、すべてのチェーンテーブル(空のテーブルを含む)のヘッダポインタを空ではなく、単一チェーンテーブルの挿入、削除操作が空のテーブルであるか、または1番目の位置で行われているかを区別する必要がなく、他の位置の挿入、削除操作と一致するようにすることです.
5.ノード付きの頭差しによるチェーンテーブルの作成
 LinkList LinkListCreate(int n)
 {
     int i = 0;LinkList p;
     LinkList head = (Node*)malloc(sizeof(Node));
     head->next = NULL;
     
     for(;idata);
         p->next = head->next;
         head->next = p;
     }
      return head;
}

6.ノード付きの末尾挿入によるチェーンテーブルの作成
LinkList LinkListCreate(int n)
{
    //       ,rear = head.  rear->next = p; rear = p
    //     rear->next = NULL;

    int i = 0;Node *p,*rear;
    LinkList head = (Node*)malloc(sizeof(Node));
    rear = head;
    
    for(;idata);

        rear->next = p; 
        rear = p;
    }
    rear->next = NULL;

    return head;
}

7.ヘッドノードの2つの利点
(1)開始ノードの位置がヘッダノードのポインタ領域に格納されているため、チェーンテーブルの第1の位置での動作がテーブルの他の位置にある
の操作が一致し、特殊な処理を行う必要がない.
(2)チェーンテーブルが空であるかどうかにかかわらず、そのヘッダポインタは、ヘッダノードを指す非空のポインタである(空のテーブルにおけるヘッダノードのポインタドメインは空である)ため、空のテーブルと
空でないテーブルの処理も統一されています.
上記の2つの利点に基づいて、先頭ノードのチェーンテーブルを作成するとより良いです.