C:メモ:チェーンテーブル可変配列

998 ワード

チェーンテーブル
各ノードは、値とポインタを含む構造です.ポインタは別の構造を指します.
//      struct _node     ,  typedef    Node,                    。
typedef struct _node{
    int value;
    struct _node *nest;
} Node;

また、チェーンテーブルを使用する場合は、このチェーンテーブルを指す構造を定義します.
typedef struct _list {
    Node* head;
} List;

チェーンテーブルで検索:
int isFound = 0;
for ( p = list.head; p; p = p->nest )
{
    if (p->value = number)//number        
    {
        isFound = 1;
        break;
    }
}

削除:
Node *q;
for (q = NULL, p = list.head; p; q = p, p = p->next)
{
    if(p->next == number )
    {
        if(q)
        {
            q->next = p->next;
        }
        else
        {
            list.head = p->next;
        }
        free(p);
        break;
    }
}

mallocが出てきたものは最後にfree
for  (p = head; p; p = q)
{
    q = p->next;
    free(p);
}

何をするにしても、境界状況を考慮し、コードの実行を安全にしなければならない.