• 締切済み

自己参照構造体が美しいと感動するのはなぜ?

「日経BPパソコンベストムック 矢沢久雄セレクション アルゴリズム&デザインパターン」のP12において >筆者はこれを知ったとき、自己参照構造体を考えた人は頭がいいなぁ、美しいなぁと感動しました。 と書かれており、さらに >短いコードが、ゴールに達した人に授与される金メダルのように見えませんか。 と書かれておりますが、こんな概念が、感動すると思いますか? こんなものに感動するのはこの本を執筆した著者だけだと思いますが、どうなんでしょうか? 自己参照構造体に感動する人なんかいるのでしょうか? プログラマーの方、回答のほうお願いします。

みんなの回答

回答No.1

美学というのは人それぞれですから。「おかめ」というのは、かつての日本の「美人」の典型だったと言いますし、時代によっても変わるんでしょう。 私自身、たとえばマイクロソフトのQBとかVB,VBAの記法が好きで、カッコばかりのCなんかの記法は美しいと思えなかったのですが、友人に言わせると、私の方がセンスがないんだそうで。私もそれを否定はしませんが、そんな彼らも、カッコではなくインデントで構造化するPythonなんかは「美しい」とか言うからさっぱりわからんです。なお、私は尻切れトンボっぽいPythonの記法はやっぱり嫌いですけど。 ただ、自己参照構造体を「美しい」と感じるのは、この人ばかりじゃなくてある程度の数、いると思いますよ。 繰り返しになりますが美学は人それぞれで、絶対的な「美」なんてないんですから、人の美学をとやかく言うのは、野暮というものでしょう。

関連するQ&A

  • 自己参照構造体にてこれのどこがすばらしいものなの?

    「日経BPパソコンベストムック 矢沢久雄セレクション アルゴリズム&デザインパターン」のP12において >筆者はこれを知ったとき、自己参照構造体を考えた人は頭がいいなぁ、美しいなぁと感動しました。 と書かれており、さらに >短いコードが、ゴールに達した人に授与される金メダルのように見えませんか。 と書かれておりますが、これのどこが素晴らしいものなんですか? こんなものに絶賛するのはこの本を執筆した著者だけだと思いますが、どうなんでしょうか? プログラマーの方、感想及び回答のほうお願いします。

  • 「再帰」にはプログラマにとってそんな魅力あるもの?

    「日経BPパソコンベストムック 矢沢久雄セレクション アルゴリズム&デザインパターン」のP10において >「再帰」にはプログラマを夢中にさせる魅力がある と書かれているんですが、これのどこが、とりこになる程、魅力あるんですか? こんなものに魅力を感じるのはこの本を執筆した著者だけだと思いますが、どうなんでしょうか? プログラマーの方、回答のほうお願いします。

  • 自己参照構造体を使った2分探索用ファイル処理

    大学での明日の課題なのですが、昇順にソートされている単語ファイルを2分探索できるようにツリー型に自己参照構造体に格納する方法がわかりません。構造体の配列に一度入れてからならできるのですが意味がありません。またファイル処理でソートされている単語を50音順に読んでくるので、自己参照構造体に入れる順序が複雑になります。最初にある単語をキーにするとただの長い構造体になってしまいます。説明不足かも知れませんがよろしくお願いします。 <構造体の宣言> struct dictionary{ char *tango struct dictionary *small; struct dictionary *big; } 構造体の中身の順[]内はデータの読み込む順     [0]     /   [1]   / \ [3]   [2]  \    [4]   \   /    \[5]      \[6]

  • 自己参照型構造体2

    いつも世話になります。 以前、自己参照型構造体について質問しました。 そのときは、Free関数についてでしたが、 今度は、関数についてです。 プログラム自体は、単純なのですが、 1)メイン関数内に、while(1){switch(){case...}} 2)[case 1]入力[case 2]表示[case 3]ファイル保存[case 4]ファイル読込[case 5]終了 関数化せずに、メイン関数内に記述をしましたら、 動作に問題はなかったです。 これを、関数化するとエラー(異常な動作)になります。 void inputdata(data *dat,int *cnt); void outputdata(data *start,int cnt); のようにしていますが、うまく関数化できる方法はありますでしょうか? よろしくお願いします。

  • 構造体のソートの記述について

     C言語で自己参照構造体(beforeとnextで繋げてます)で名簿をつくり、年齢で昇順ソートをしようと考えています。  そこで、ソート関数の「qsort」というものを使ってソートしたいのですが、どのように使ったらいいのでしょうか?  参考例などがありましたら、教えていただけますか?  よろしくお願いします。

  • 構造体リストの使い方について

    こんにちは。 断片データを受取ってから一旦復帰し、再びデータが送られ、全てのデータを受取った後に今まで受取った断片データを全てソートしたものを返却する関数を作成しようとしています。  断片データを保存する際には、動的に構造体領域を確保して実現しようと考えています。 まず、受け渡されるデータの形式は以下のようなものです。 グループA{A1,A2,A3…要素の数は可変} グループB{B1,B2,B3…要素の数は可変} グループC{C1,C2,C3…要素の数は可変} : グループの数は可変 ※グループの数と要素の数は、実際に受け渡されたデータの中身を見ないと分からない。 受け側では、まず 1.グループは新規グループか? を判定する。  ・新規グループなら、新規要素分の領域を動的確保し、新規構造体リストへ登録する。  ・既存グループなら、新規要素分の領域を動的確保し、対象となる構造体リストへリンクする。 2.グループの要素を全て受取ったら  ・構造体リスト内のデータをソートし、リンクを張りなおす。 上記1.2処理を、グループ全てを受取るまで繰り返す。 [質問内容] 1.グループが1つの場合は、1つの構造体を自己参照構造体にし、受け渡されるデータを次々と動的領域確保及び設定にて実現できそうなんですが、グループの数が可変のため、どう制御すればよいのか分かりません。仮に、グループ全体を管理するテーブル領域のようなものを用意し新規グループが発生するたびに、管理テーブルへ登録するというようなやり方は問題ないのでしょうか。また問題ない場合は、管理テーブルで可変領域を確保するにはどうすればよいのでしょう か。 2.1つの構造体リスト内をソートするアルゴリズムを記載したサイトなどありましたら、教えてください。 以上、説明不足のところもあるかもしれませんが、よろしくお願いします。

  • 自己参照型構造体のFree関数について

    /////////////////////////////////////// // 自己参照型構造体 /////////////////////////////////////// // 以下のソースで、free関数がうまく使えません。 // アドバイスを下さい。 // よろしくお願いします。 #include<iostream> using namespace std; struct data { int num; data *next; }; typedef struct data dat; int main() { dat da; dat *p1,*p2,*p3; p1=&da;p2=&da; for(int i=0;i<10;i++) { p1->next=(dat *)malloc(sizeof(dat));; p1->num=i+1; p1=p1->next; } int sum=0; for(int i=0;i<10;i++) { sum+=p2->num; p2=p2->next; } for(int i=0;i<10;i++) { p3=p2->next; free(p2); p2=p3; } cout << sum; getchar();return 0;

  • 自己参照構造体のtypedef宣言とスコープ

    MinGWとgccでプログラムを組んでいます(OSはWin7です)。 main.cpp、variable.h、function.hの3つのファイルからなり、 variable.hで自己参照構造体とそれのtypedef宣言をしています。 以下のような感じです。 ************************* typedef struct hoge HOGE; struct hoge{ int a,b; double x,y; HOGE *p1, *p2; } ************************* そのあとfunction.hでこのHOGE型のポインタを受ける関数を宣言しています。 void hogehoge(HOGE *p1, HOGE *p2); これをmain.cpp内で、variable.h、function.hの順に読み込んでいます。 そして、コンパイルエラーがでます。 error: unknown type name 'HOGE'(これがずらっと) typedefのスコープの関係なのか、それ以外の問題なのか。 煮詰まっています。アドバイスお願いいたします。m(_ _)m

  • C言語 自己参照型 複数木構造

    C言語の自己参照型を使用しプログラムを作ろうとしていますが、 2分探索木についての解説、サンプルをのせているサイトは たくさんあり勉強になったのですが、 木が2以上の複数の場合になった場合、どういったプログラムをくめば いいのかわからず、学習したいと思っています。 参考となる、サイト、サンプルを教えていただけないでしょうか? //2分木の場合 struct node{ int nodeID; struct node *nextA; struct node *nextB; } //複数木の場合? struct node{ int nodeID; struct node **next; } のように複数木の場合は、次の木が複数に対応できるように ポインタのポインタを使用するのかと思いますが、 構造体のメンバでポインタのポインタの使用の仕方が いまいち理解できませんでした。 よろしくお願い致します。

  • 自己免疫寛容のシステムについて

     こんにちは。医学を学んでいるものです。   免疫学を学んでから人の体が如何に効率よく外界からの異物を認識して我々の体の恒常性をたもっていることに感動を覚えます。   さて、題にありますように、自己免疫を防ぐメカニズムをどなたか詳しい方がおられれば教えていただきたいと思っているところです。自己免疫のシステムが破綻したのがいわゆる自己免疫疾患ですよね。ということは常に我々の体で作られているリンパ球などはそれらに反応しないようなメカニズムを作っていると考えられるのですが真実の程はいかがなのでしょう。   また、そのシステムの破綻によって引き起こされる病気なども合わせて提示下されればうれしいと思います。