/* ppps_int_list.h [サンプルライブラリ] int型の双方向線形リスト author: K.Y (Programming Place Plus) version 1.0.2 '2019/9/16 ・Webサイト側が C99規格へ対応したことに合わせて、コードを修正。 コメントスタイルと、変数宣言位置を変えた。 bool型を使う。 1.0.0 '2015/1/10 */ #ifndef PPPS_INT_LIST_H #define PPPS_INT_LIST_H #include /* 双方向線形リスト型 */ struct PPPSIntList_tag { int value; struct PPPSIntList_tag* next; struct PPPSIntList_tag* prev; }; typedef struct PPPSIntList_tag* PPPSIntList; /* リストを作成 戻り値: 作成されたリスト。 作成に失敗した場合は NULL が返される。 */ PPPSIntList ppps_int_list_create(void); /* リストを破棄する 引数: list: 破棄するリスト。 */ void ppps_int_list_delete(PPPSIntList list); /* リストの末尾に要素を追加する 引数: list: 追加対象のリスト。 value: 追加する要素の値。 戻り値: 要素の追加に成功したら 0以外、失敗したら 0 が返される。 */ bool ppps_int_list_add_tail(PPPSIntList list, int value); /* リストの先頭に要素を追加する 引数: list: 追加対象のリスト。 value: 追加する要素の値。 戻り値: 要素の追加に成功したら 0以外、失敗したら 0 が返される。 */ bool ppps_int_list_add_front(PPPSIntList list, int value); /* リストに要素を挿入する 引数: list: 追加対象のリスト。 value: 追加する要素の値。 pos: 挿入位置。これと同じ値を持つ要素の直後に挿入される。 戻り値: 要素の追加に成功したら 0以外、失敗したら 0 が返される。 */ bool ppps_int_list_insert(PPPSIntList list, int value, int pos); /* 要素を削除する 引数: list: 追加対象のリスト。 value: 削除する要素の値。 戻り値: 削除できた要素の個数を返す。 */ int ppps_int_list_remove_elem_by_value(PPPSIntList list, int value); /* 要素を削除する 引数: elem: 削除する要素 戻り値: 要素の削除に成功したら 0以外、失敗したら 0 が返される。 */ bool ppps_int_list_remove_elem(PPPSIntList elem); /* リストを空にする 引数: list: 対象のリスト。 */ void ppps_int_list_clear(PPPSIntList list); /* 先頭の要素を返す 引数: list: 対象のリスト。 戻り値: 連結リストの先頭にある要素を指すポインタ。 要素が空の場合は NULL。 */ PPPSIntList ppps_int_list_get_head(PPPSIntList list); /* 末尾の要素を探す 引数: list: 対象のリスト。 戻り値: 連結リストの末尾にある要素を指すポインタ。 */ PPPSIntList ppps_int_list_search_tail(PPPSIntList list); /* 指定した値を持つ要素を探す 引数: list: 対象のリスト。 value: 探し出す要素の値。 戻り値: 先頭から連結リストを辿り、最初に見つけた value と同じ値を持つ要素のアドレス。 見つからなかった場合は NULL を返す。 */ PPPSIntList ppps_int_list_search(PPPSIntList list, int value); /* リスト内の要素の個数を返す 引数: list: 対象のリスト。 戻り値: リスト内に存在する要素の個数。 */ int ppps_int_list_count(PPPSIntList list); /* リストを逆順にする。 引数: list: 対象のリスト。 */ void ppps_int_list_reverse(PPPSIntList list); /* 要素を出力する 引数: list: 対象のリスト。 */ void ppps_int_list_print(PPPSIntList list); #endif