データ構造のシングルチェーンテスター挿入法
6502 ワード
データ構造のシングルチェーンテスター挿入法
シングルチェーン表はリニアテーブルの一種で、シングルチェーン表のヘッド挿入法はプリピン法とも言われています.
チェーンテーブルはリニアテーブルの一種であり、シーケンステーブルとは違って、メモリに連続的に保存されていません.C言語では、チェーンはポインタ関連で実現されます.一方、シングルチェーンテーブルはチェーンテーブルの中の一つで、シングルチェーンテーブルについてはそのノードにデータドメインがあり、次のノードを指す一つのポインタ領域しかない.シングルチェーン表を作成する方法は2つあります.それぞれヘッド挿入法と最後挿入法です.
ヘッド挿入法とは、ノードの逆順によって徐々にチェーンの頭に結点を挿入することです.逆の補間法は、ノードの順序によって徐々にリンクの末尾にノードを挿入することである.
対照的に、最初の入力のノードは、最後に生成されるチェーンテーブルが逆順序であり、実際にはチェーンテーブルの最後のノードである.
習慣のために、通常はテール・インサートでチェーンを作る.下のコードはヘッドセットと最後のプラグインを実現します.
ヘッドノードを作成
中間挿入
シングルチェーン表はリニアテーブルの一種で、シングルチェーン表のヘッド挿入法はプリピン法とも言われています.
チェーンテーブルはリニアテーブルの一種であり、シーケンステーブルとは違って、メモリに連続的に保存されていません.C言語では、チェーンはポインタ関連で実現されます.一方、シングルチェーンテーブルはチェーンテーブルの中の一つで、シングルチェーンテーブルについてはそのノードにデータドメインがあり、次のノードを指す一つのポインタ領域しかない.シングルチェーン表を作成する方法は2つあります.それぞれヘッド挿入法と最後挿入法です.
ヘッド挿入法とは、ノードの逆順によって徐々にチェーンの頭に結点を挿入することです.逆の補間法は、ノードの順序によって徐々にリンクの末尾にノードを挿入することである.
対照的に、最初の入力のノードは、最後に生成されるチェーンテーブルが逆順序であり、実際にはチェーンテーブルの最後のノードである.
習慣のために、通常はテール・インサートでチェーンを作る.下のコードはヘッドセットと最後のプラグインを実現します.
ヘッドノードを作成
//
Node* Create_List ()
{
//
Node* list = (Node*) malloc(sizeof(Node) / sizeof(char));
if (NULL == list) //
{
return FALSE;
}
list->next = NULL;
return list;
}
挿頭法//
int Insert_Last (Node* h, LinkData data)
{
//
if (NULL == h)
{
return FALSE;
}
//
Node* node = (Node*) malloc(sizeof(Node) / sizeof(char));
if (NULL == node)
{
return FALSE;
}
//
node->data = data;
node->next = h->next; // :node->next = *h;
//
h->next = node;
return TRUE;
}
尾行法//
int Insert_Last(Node* h, LinkData data)
{
if (NULL == h)
{
return FALSE;
}
//
Node* node = (Node*) malloc(sizeof(Node) / sizeof(char));
if (NULL == node)
{
return FALSE;
}
//
node->data = data;
node->next = NULL;
//
Node* tmp = h;
while(tmp->next)
{
tmp = tmp->next;
}
// node
tmp->next = node;
return TRUE;
}
拡張中間挿入
//
int Insert_Pos(Node *h, int pos, LinkData data)
{
//
if (NULL == h)
{
return FALSE;
}
Node* tmp = h;
int i;
for (i = 0; i < pos - 1; i++)
{
if (NULL == tmp)
{
break;
}
tmp = tmp->next;
}
// tmp
if (NULL == tmp)
{
printf (" ");
return FALSE;
}
Node* node = (Node*) malloc(sizeof(Node) / sizeof(char));
if (NULL == node)
{
return FALSE;
}
node->data = data;
node->next = tmp->next;
tmp->next = node;
return TRUE;
}