C言語データ構造-チェーンテーブル作成
1.接点構造
2.先頭に立たないピンの差し込み方
ノードを作成するたびに、ノードがヘッドノードになります.これにより、ヘッドノードが常に前方に移動し、特定のヘッドノードのないチェーンテーブルを作成できます.
最初に作成したノードは、チェーンテーブル全体の最上位に表示されるため、データの書き込みは逆順序になります.
注意:最初は、headをNULLに初期化します.
3.先頭ノードでない末尾挿入によるチェーンテーブルの作成
ヘッダノードを指すポインタは移動できません.最後のノードを常に指すポインタrearを作成します.
注:最後にチェーンテーブルの末尾をNULLに設定
4.ヘッド接点
ヘッダノードのデータドメインは、情報を格納することなく、ヘッダノードのポインタドメインは、1番目のノードを指すポインタ(すなわち、1番目の要素ノードの格納位置)を格納します.ヘッダノードの役割は、すべてのチェーンテーブル(空のテーブルを含む)のヘッダポインタを空ではなく、単一チェーンテーブルの挿入、削除操作が空のテーブルであるか、または1番目の位置で行われているかを区別する必要がなく、他の位置の挿入、削除操作と一致するようにすることです.
5.ノード付きの頭差しによるチェーンテーブルの作成
6.ノード付きの末尾挿入によるチェーンテーブルの作成
7.ヘッドノードの2つの利点
(1)開始ノードの位置がヘッダノードのポインタ領域に格納されているため、チェーンテーブルの第1の位置での動作がテーブルの他の位置にある
の操作が一致し、特殊な処理を行う必要がない.
(2)チェーンテーブルが空であるかどうかにかかわらず、そのヘッダポインタは、ヘッダノードを指す非空のポインタである(空のテーブルにおけるヘッダノードのポインタドメインは空である)ため、空のテーブルと
空でないテーブルの処理も統一されています.
上記の2つの利点に基づいて、先頭ノードのチェーンテーブルを作成するとより良いです.
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つの利点に基づいて、先頭ノードのチェーンテーブルを作成するとより良いです.