チェーン作成の3つの方法
最も一般的なデータ構造の一つとして、チェーンテーブルは様々な面に広く応用されており、オペレーティングシステムの下のドライバから様々なアプリケーションまで、
どこでもチェーンの姿が見られます.操作の簡便さと応用の効率性のためです.個人の現在学んだことを総括して、チェーンの創建方式は主にあります.
以下のいくつかの方法:
方法1:
方法二:
方法三:
valueの結点.
どこでもチェーンの姿が見られます.操作の簡便さと応用の効率性のためです.個人の現在学んだことを総括して、チェーンの創建方式は主にあります.
以下のいくつかの方法:
方法1:
struct link_node {
struct link_node *next;
int value;
};
struct link_node *list = NULL;
struct link_node *tail = NULL;
struct link_node *node;
for ( i = 0; i < n; i++ ) {
node = (struct link_node *)malloc(sizeof(struct link_node));
node->next = NULL;
node->value = ??;
if ( tail != NULL ) {
tail->next = node;
tail = node;
}
else {
list = tail = node;
}
}
この方法は最も一般的な方法であり、簡単明瞭であるべきですが、残念なことに、挿入するたびに比較し、毎回tailの値を変更します.方法二:
struct link_node *list = NULL;
struct link_node **tail = &list;
struct link_node *node;
for ( i = 1; i <= 5; i++ ) {
node = (struct node *)malloc(sizeof(struct node));
node->next = NULL;
node->value = ??;
*tail = node;
tail = &(node->next);
}
この方法は少し推敲する必要があります.tailはここで乗り換えの役割を果たし、効率的なデータ挿入を実現しました.方法三:
struct link_node *list = (struct node *)malloc(sizeof(struct node));
list->next = NULL;
list->value = (int)list;
struct link_node *node;
for ( i = 1; i <= n; i++ ) {
node = (struct node *)malloc(sizeof(struct node));
node->next = NULL;
node->value = ??;
(struct link_node *)(list->value)->next = node;
list->value = (int)node;
}
この方法は少し巧妙ですが、学習性を失わず、最後のリストのvalueは最後の結点の住所です.nextは最初の意味を持つアドレスを指します.valueの結点.