アルゴリズムサンプルコード補完スレッド
■ このスレッドは過去ログ倉庫に格納されています
0001今時の14才
NGNGC言語による最新アルゴリズム事典
http://www.matsusaka-u.ac.jp/~okumura/algo/
Cプログラマのためのアルゴリズムとデータ構造
http://www.context.co.jp/~cond/books/algo/
など色々ありますが、
* サンプルコードが断片的
* サンプルコード自体がない
などの問題で不愉快な思いをしたことはありませんか?
そういうサンプルコード不足を補うスレッドです。
0002今時の14才
NGNG#include <stdio.h>
#include <stdlib.h>
typedef struct _LinkedList
{
struct _LinkedList *next;
struct _LinkedList *prev;
int value;
} LinkedList;
LinkedList linklist_root;
LinkedList *linklist_cur = NULL;
void
ll_init( void )
{
linklist_root.next = linklist_root.prev = &linklist_root;
linklist_cur = &linklist_root;
}
void
ll_destory( void )
{
LinkedList *p = linklist_root.next;
LinkedList *next = NULL;
while ( p != &linklist_root )
{
next = p->next;
free( p );
p = next;
}
}
void
ll_add( int value )
{
LinkedList *m = malloc( sizeof( LinkedList ) );
m->value = value;
m->prev = linklist_cur;
m->next = linklist_cur->next;
linklist_cur->next->prev = m;
linklist_cur->next = m;
linklist_cur = m;
}
int
ll_remove( LinkedList *rm )
{
if ( rm == &linklist_root )
{
return 0;
}
rm->prev->next = rm->next;
rm->next->prev = rm->prev;
return 1;
}
void
ll_remove_by_num( int rmv )
{
LinkedList *p = linklist_root.next;
while ( p != &linklist_root )
{
if ( p->value == rmv )
{
ll_remove( p );
}
p = p->next;
}
}
typedef void ( *LinkedList_LoopFunc )( LinkedList *p );
void
ll_loop( LinkedList_LoopFunc f )
{
LinkedList *p = linklist_root.next;
while ( p != &linklist_root )
{
f( p );
p = p->next;
}
}
void
put_value( LinkedList *p )
{
printf( "%d\n"@` p->value );
}
int
main()
{
ll_init();
ll_add( 1 );
ll_add( 1 );
ll_add( 3 );
ll_add( 4 );
ll_add( 1 );
ll_loop( put_value );
ll_remove_by_num( 1 );
puts( "-----" );
ll_loop( put_value );
ll_destory();
return 0;
}
000320才
NGNGhttp://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/
0004名無しさん@お腹いっぱい。
NGNG0005ココわ?
NGNG■ このスレッドは過去ログ倉庫に格納されています