[ create a new paste ] login | about

Link: http://codepad.org/0dqb5dHw    [ raw code | fork ]

C, pasted on Jun 11:
#ifndef DOUBLY_LINKED_LIST_2CH_1307166756_378
#define DOUBLY_LINKED_LIST_2CH_1307166756_378

#define LIST_ERROR_NO_ERROR 1
#define LIST_ERROR_OUT_OF_MEMORY 0
#define LIST_ERROR_OUT_OF_RANGE (-1)

typedef struct list_element list_element;
typedef struct doubly_linked_list doubly_linked_list;

// リストの要素(データはint型で固定)
struct list_element
{
	int data;	// データ
	list_element *prev;	// 前の要素へのポインタ
	list_element *next;	// 次の要素へのポインタ
};

// リスト構造体
struct doubly_linked_list
{
	int size;			// 要素数
	list_element *head;	// 先頭のダミー要素
	list_element *tail;	// 末尾のダミー要素
};

// リストを作成する
// 戻り値 != NULL : 成功
// 戻り値 == NULL : 失敗(メモリ確保に失敗)
doubly_linked_list *list_create();

// リストを破棄する
void list_destroy(doubly_linked_list *L);

// リストの末尾に指定した値を追加する
// 戻り値 == LIST_ERROR_NO_ERROR : 成功
// 戻り値 == LIST_ERROR_OUT_OF_MEMORY : 失敗(メモリ確保に失敗)
int list_push(doubly_linked_list *L, int value);

// リストの末尾から値を削除する
void list_pop(doubly_linked_list *L);

// リストの要素をすべて表示する
void list_print(const doubly_linked_list *L);

// リストから指定した値を削除する(最初に見つかった要素がひとつだけ削除される)
void list_remove(doubly_linked_list *L, int value);

// リストの指定した位置に値を挿入する
// 戻り値 == LIST_ERROR_NO_ERROR : 成功
// 戻り値 == LIST_ERROR_OUT_OF_MEMORY : 失敗(メモリ確保に失敗)
// 戻り値 == LIST_ERROR_OUT_OF_RANGE : 失敗(挿入位置が不正) 
int list_insert(doubly_linked_list *L, int position, int value);

#endif


Create a new paste based on this one


Comments: