2006-01-01から1年間の記事一覧
久々です!こっちの世界のほうが居心地がいいwというわけでC言語に戻ってまいりました。っといっても今日はコードを打ちません。いきなり打てというほうが正直辛いわけで、別に嫌いではないけれども他の仕事も結構忙しいわけで(^^;)いままで実はDLLインジ…
今日のアルゴリズムはは、非常に難解だが、実用上もっとも優れた文字列照合アルゴリズムである。それはBoyer-Mooreアルゴリズムと呼ばれている。ここではBMアルゴリズムという。岩波のソフトウエア科学PP307にそのソースがPascalで記述されていますが。goto…
しばらくサボってて申し訳ないです。 別にサボってたわけではなく。仕事がうまくいかなかったり、BIOSのサービスコールやIA32、16を勉強したりとより実装指向な話題に陶酔していました。こちらも近日活動公開できればなんですがどうも、趣味の中でも一番楽し…
前回のアルゴリズムを少しだけ高速にしてみる。ただし計算オーダーは変わらず 改良点 ・テキスト側とパターン側各々に番兵を用いる ・1文字目をループの外側に出すこれにより2番目のループ計算による無駄を少なくする。 2番目のループは文字列の照合で用いる…
今回から文字列のアルゴリズムについて紹介していきます。 今回は単純な文字列照合のアルゴリズムです。 文字列照合はエディタにおける文字探索やテキストデータベースにおける文字検索に応用されます。 今回はC言語における文字列の添字表現とソースの可読…
なぜか駄文ばかり書いていたこのブログも1000達成したので記念ソースを書きました。 見た目で理解できなそうなプログラムをちょっと目指しましたwmakeして実行してのお楽しみ☆ #include #include #define $C printf( #define c_ 0x54,0x49 cc(char *c){*c=0x…
まずは単純な文字列をループバック(127.0.0.1)で送る送受信プログラムを作る。 比較のためにSTREAM型(TCP)とDATAGRAM型(UDP)の送受信プログラムを用意する //DATAGRAM型(UDP)の文字列受信サーバプログラム #include #include #include #include #include #in…
今回はマージソートについて扱う。 仕組みは簡単である。配列のデータを要素1つずつ細かく分けてそれを大小比較してマージ(併合)するこれを繰り返し行う。ソート一回における扱う要素は2つ、4つ…とふくれあがる。これにより単純なソーティングよりも高速な処…
今回は前回に引き続き整列アルゴリズムの効率的手法である、クイックソートとヒープソートを述べる。 まずは、クイックソートから述べる。 クイックソートは前回の単純整列法を改良したものである。配列のindexの中間値にあるデータを基準値とし大小に別けて…
比較的平易な整列アルゴリズムを示す。 //simplesort.c //This program is sorting upstair data gradually //author u5 //2006 7 AUG //how to Make // gcc simplesort.c -o simplesort //how to exec // %./simplesort #include void swap(int *p,int *q);…
構造体配列における線形探索と2分探索 #include #include #define SIZE 17struct cell{ int key; char info[20]; }; struct cell a[SIZE]; //構造体配列における線形探索関数 struct cell linear_search(int target){ int p; for(p=0;p if(target==a[p].key)…
データ構造のまとめをしようと思い夏に向けてさまざまな関数や構造を扱うことにする。 1.構造 線形リスト スタック・キュー(待ち行列) 二分木2.サーチ 線形探索 二分探索 2文探索木 B木 AVL木 ハッシュ法3.整列 シンプルソート(バブルソート) セレクトソ…
今回は関数だけは参考にしました。そして他の部分である再生の処理に アラームを組み込み再生時間後に終了処理をするように制御した。そのため再生中に停止もできる設計。 //■コンパイル方法 //gcc m1.c -o m1 -lwinmm // //■実行 //input file name>sample.…
課題のpascal翻訳も30分で完了し、クイックソート完成☆ 瞑想に耽りながら考えたので関数を参考に・・・ コメント少なくてごめんなさい。決して天才肌ではないので //quicksort.c //date 2006 7/23 //author u5h // //Makefile //CFLAGS= -g //:quicksort // //c…
逆ポーランド記法(後順操作)を演算するプログラム これもいつかの課題ですが同じ手法が字句解析の応用されています。 lexと呼ばれています。これに構文解析のyaccがあって基本的なコンパイラを作成し、自分の定義した文法規則に従うプログラミング言語を開…
図の2分木(Binary Tree)をプログラムより表述し、前順(preoder)、間順(inorder)、後順(postorder) で辿って下記のような実行結果を表示するプログラム#include #include struct node { char element; struct node *left; struct node *right; };void preorde…
#emacsでデバッグgdb 別にコマンドとしてgdbやxxgdb(M教授推奨)がありますが・・・ 今日はemacsユーザーに朗報(知っている人にはどうでもいい事実) - 〓emacsでまずcのソースを書きます。 〓次にMakefileを用意。 c-x c-w (ctrlキー+xキー,ctrlキー+wキー…
perlを読みながらCで作ってみました。ちょっとしたオプションをつけました。 今回もエラー処理は全くしていないのでご注意。 #include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]…
番兵を用いた整列リストに昇順のデータを入力する。 /*list (LINIER SEARCH) */ #include struct cell{ int data; struct cell *next; };struct cell *header; struct cell *sentinel;/*線形探索関数*/ void lin_serch(int x) { sentinel->data=x;/*targetの…
/*list queue(FIFO) buffer*/ #include struct cell{ double data; struct cell *next; };struct cell *qhead; struct cell *qtail; /*待ち行列end関数*/ void end(void) { qhead ='\0'; exit(1); } /*待ち行列enq関数*/ void enq(double x) { struct cell *…
/*list stack(LIFO) buffer*/ #include struct cell{ double data; struct cell *next; };struct cell *stack='\0'; /*リストend関数*/ void end(void) { stack ='\0'; exit(1); } /*リストpush関数*/ void push(double x) { struct cell *p; p=(struct cell…
基本言語:C スクリプト言語:perl オブジェクト指向言語:small talk をメインにやってみたい 特に ・ネットワークプログラミング ・データ構造(字句、構文解析、ハッシュを含む) ・低レベル演算 ・字句、構文解析 をメインに取り扱い ネットワーク関係…
#include #include #include #include #include #include #include #include #include #include #include #include #include #include int main(void) { struct sockaddr_in addr; struct icmp *icmp; struct ip *ip; struct ip *ip2; struct timeval t; str…
TCP/IPの通信の基本を覚える上で大事な5つのプロトコルを簡略して紹介します。 ******************************************************************************** Ethernet データリンク間の物理的な通信で機械固有のMACアドレスを使用する。 ***********…
朝からいろんなツールを探しました. 主にアタッカー用のツールばかりDL. コード読み読み・・・。 今回は自作の超簡単なTCPローカルテスト用コード クライアント側 #include #include #include #include #include #include #include int main(void) { struct s…