>> JASONハーシュホーン：みんなを歓迎 第七。
我々はもちろん、週7である。
この今後の木曜日 ハロウィーンは、私は私である
カボチャのようにドレスアップ。
私は腰をかがめると装着ができませんでした 私の靴、私はなぜそれがだ
ちょうど靴下を着用しています。
私はまた、下に何も着ていないよ これ、それはですので、もし、私はそれを取ることはできません
あなたに邪魔。
私はそのため、事前にお詫び申し上げます。
あなたが想像する必要はありません。 何が起こっている。
私はボクサーを着ています。
だから、すべての良いことだ。
>> 私は、私は理由について長い話を持っている カボチャに扮したが、私はするつもりだ
後でこのセクションのためにそれを保存 私は始めたくないからです。
我々はエキサイティングなことがたくさんある 今週の上に行くために。
それらのほとんどは、これに直接関係 今週の問題セット、スペルミス。
また、リンクされた上で行くことになるだろう リストやハッシュテーブル
セクション全体のため。
私は、毎週のリストをこのリストを設置 あなたとあなたを助けるためにするためのリソース
このコースに重要。
損失で、またはいくつかを探していた場合： 詳細については、次のいずれかをチェックしてください
これらのリソース。
>> ここでも、pset6はスペル​​ミスで、 今週のPSET。
そしてそれはまた、あなたを奨励し、私 他のいくつかを使用するように、なることをお勧めします
特にこのPSETためのリソース。
特に、3は私だ 画面上にリストアップ -
我々は精通してきたGDB、 そして今、しばらくの間使用してきている
今週非常に参考になるだろう。
だから私はここにそれを広げた。
しかし、いつでも、Cで作業している、 あなたはいつもにGDBを使用する必要があります
プログラムをデバッグします。
今週もValgrindは。
誰もがValgrindのが何を知っていますか？
>> 観客：これは、メモリリークをチェックする？
>> JASONハーシュホーン：Valgrindの メモリリークをチェックします。
もしそうなら、あなたのmalloc何かお プログラムは、メモリーのために求めている。
あなたのプログラムの最後には、次のものが あなたがしたすべてのものに無料で書き込む
メモリをお返しするためにmallocさ。
あなたが最後に自由記述していない場合は あなたのプログラムは、結論に来る、
すべてが自動的になります 解放される。
と小さなプログラムのために、それはだ ていないことを大したこと。
しかし、あなたは長いランニングを書いているのであれば 終了しないプログラム、
必ずしも、分またはAのカップルで 数秒後、メモリリーク
巨大な契約になることができます。
>> そうpset6ため、期待があることである あなたは、ゼロメモリリークを持つことになります
あなたのプログラム。
メモリリークをチェックするには、実行してvalgrindの そしてそれはあなたにいくつかの素敵なをあげる
出力しているかどうかを知らせる またはすべてが無料だったわけではありません。
我々は、後でそれを練習します 今日では、うまくいけば。
>> 最後に、diffコマンド。
あなたはそれに似たものを使用 PEEKツールでpset5中。
あなたの中に見ることができました。
また、あたりも、差分を使用 問題は、仕様を設定してください。
しかし、あなたはに許可された 2つのファイルを比較します。
あなたは、ビットマップファイルとを比較することができ インフォスタッフ液のヘッダと
pset5でソリューションの場合 あなたはそれを使用することにしました。
diffはあなたができるようになります だけでなく、それを行う。
あなたがのために正しい答えを比較することができます あなたの答えに設定今週の問題
と表示された場合、それまでの線または参照 どこにエラーがある。
>> ので、これらは3つの良いツールであることを あなたは今週のために使用する必要がありますし、
間違いなくあなたのプログラムをチェック これら3つのツールで
それをインチにする前に
繰り返しますが、私は毎週述べたように、 両方 - あなたは私のためのフィードバックがあれば
正かつ建設 -
ウェブサイトに向かう気軽に このスライドの下部にある
そして入力がそれ。
私は実際にどんな感謝 そしてすべてのフィードバック。
そして、あなたは私にその具体的なものを与える場合は、 私は、私はあることを改善するために、またはすることができます
あなたはに私をしたいことをよくやって 続けて、私は心にそれを取ると、
本当に耳を傾ける努力 ご意見·ご感想を。
私は私がするつもりだ約束することはできません すべてのものは、しかし、身に着けているような
毎週コスチュームパンプキン。
>> だから我々はの大半を過ごすつもりです セクションには、私が述べたように、の話
リンクリストやハッシュテーブル、その に直接適用されます
問題は、この一週間に設定。
リンクリストは、我々は比較的オーバー行くよ すぐに我々は公平なビットを費やしてきたので、
時間の欄でその上を行く。
そして私たちはまっすぐに買ってあげる リンクされたリストのための問題をコードする。
した後、最後に、我々はについて話します 彼らがこれにどのように適用されるかのテーブルをハッシュし、
今週の問題は、設定してください。
>> あなたは前に、このコードを見てきました。
これは構造体であり、それは定義されている ノードと呼ばれる新しい何か。
およびノー​​ド内の整数があります 右こことへのポインタがあります
別のノード。
我々は前にこれを見てきました。
これはのために控えてきた 今数週間。
それは我々がしてきたポインタを兼ね備え 可能にし、構造体を操作
私たちは、別の2を結合する 1データ型に物事。
>> 画面上で起こってたくさんあり​​ます。
しかし、それはすべて、比較的であるべき あなたに精通している。
最初の行では、我々 新しいノードを宣言します。
そして、その新しいノードの内部で、私はセット 1にそのノード内の整数。
私たちは、私がやっている次の行を参照してください printfコマンドが、私はグレー表示されました
printfコマンドは本当に理由 重要な部分はここに、このラインである -
new_node.n。
ドットは何を意味するのでしょうか？
>> 観客：ノードに移動し、 それのためのn値を評価します。
>> JASONハーシュホーン：それです。 まったく正しい。
ドットは、n個の部分にアクセスを意味 この新しいノードの。
この次の行は何をしますか？
マイケル。
>> 観客：それは別のノードを作成します つまり、新しいノードを指すようになります。
>> JASONハーシュホーン：だからそれはしていません 新しいノードを作成します。
それは何を作成します？
>> 観客：ポインター。
>> JASONハーシュホーン：ノードへのポインタ、 ここで、このノード*で示すように
だから、ノードへのポインタを作成します。
そして、それはどのノードを指している マイケルに？
>> 観客：新しいノード？
>> JASONハーシュホーン：新しいノード。
我々はしましたので、それはそこに指して それを新たなノードのアドレスを与えられた。
そして今、この行では、参照してください。 の2種類の方法
同じことを表現する。
と私は指摘したいと思ったどのようにこれらの 二つのことは同じです。
最初の行では、間接参照 ポインター。
だから我々はノードに移動します。
つまり、この星が何を意味するのです。
私たちは、ポインタを持つ前に、それを見てきました。
そのノードに移動します。
これはカッコ内にあります。
して、ドット演算子を経由してアクセスする そのノードのn個の要素。
>> だから構文を取っている 我々は今ここで見た
ポインタとそれを用いた。
もちろん、もし忙しいの種類を取得します あなたは、これらの括弧を書いている -
あの星とそのドット。
それは少し忙しい。
だから我々は、いくつかのシンタックスシュガーを持っています。
この行はここ -
ptr_node-> N。
つまり、まったく同じことを行います。
ように、コードの2行があります 同等と行います
まったく同じこと。
>> しかし、私は前にそれらを指摘したかった あなたが理解しておりますので先に進む
本当に正しいここにこの事があることを 逆参照のためだけ糖衣構文
ポインタ、その後に行く その構造体のnの部分。
このスライドについてのご質問？
[OK]をクリックします。
>> だから我々は、カップルを通過しようとしている あなたが行うことができます操作の
リンクされたリスト。
リンクリスト、リコールは、一連の 互いを指すノード。
そして、我々は一般的にはポインタで始まる 一般的に、ヘッドと呼ばれる、を指していることを
リストの最初のもの。
我々は、ここで最初の行にそう まず私たちのオリジナルのLを持っています。
だから、そのことは、あなたが考えることができます - この テキスト右ここでは、などと考えることができます
我々は保存されてきたばかりのポインタ どこかのポイント
最初の要素へ。
このリンクリスト内の 我々は4つのノードがあります。
各ノードは、大きな箱です。
大きな内部大きな箱 ボックスには、整数部分である。
そして、我々は、ポインタの部分を持っている。
>> これらのボックスは、描かれていない スケールの大きさとは理由
バイト単位の整数？
どのくらいになりました？
四つ。
ポインタはどのように大きいです！
四つ。
だから本当に、我々は描画した場合 この両方のボックスをスケールする
同じサイズになります。
このケースでは、挿入する リンクされたリストに、何か。
だから、我々は挿入している、ここでダウンして見ることができます 5私たちはを横断
リンクリスト、5見つける 行くし、それを挿入します。
>> それを打破してみましょうと行く もう少しゆっくり。
私は、ボードを指すことにします。
だから我々は我々のノードが5という 私たちは、mallocはで作成しました。
なぜ誰もが笑っている？
ほんの冗談です。
[OK]をクリックします。
だから我々は5をmallocさだ。
私たちは、このノードを作成しました どこか別の場所。
我々は行くこと準備ができている。
私たちは、目の前に開始 2との私たちのリスト。
そして、我々は挿入したい ソートされた方法で。
>> だから我々は2を参照してください、私たちは入れたい場合は、 我々が見たときに5に、私たちは何をしますか
私たちより少ない何か？
何が？
我々は、この中に5を挿入したい リンクリスト、それがソート保つ。
私たちは、数2を参照してください。
だから我々は何をしますか？
マーカス？
>> 観客：ポインタを呼び出し 次のノードに。
>> JASONハーシュホーン：そしてなぜ 私たちは、次のいずれかに行く？
>> 観客：それはだから リスト内の次のノード。
そして、我々はそれだけで、他の場所を知っている。
>> JASONハーシュホーン：そして5は大きい 特に、2つより。
我々は、ソートそれを維持したいので。
そのように5つが2以上である。
だから我々は、次のものに移動する。
そして今、我々は4に達する。
我々は4に達したときに、何が起こりますか？
>> ファイブは4より大きい。
だから我々は続ける。
そして今、我々は6にいる。
そして、我々は6で何を見ていますか？
はい、カルロス·？
>> 観客：シックス5より大きい。
>> JASONハーシュホーン：シックスです 5よりも大きい。
私たちが望む場所だからです 5を挿入します。
しかし、覚えておいて、もし私たち ここでしか1ポインタを持っている -
これはです私達の余分なポインタである リストを横断する。
そして、我々は6を指しています。
私たちは何のトラックを失ってしまった 6の前に来る。
だから我々はに何かを挿入したい場合は、 このリストはソートされ、それを維持し、我々は
おそらくどのように多くのポインタが必要ですか？
>> 観客：二つ。
>> JASON HIRSCHORN：二つ。
電流を追跡するOne 1とを追跡するための1
以前の1。
これは、シングルリンクリストです。
これは、一方向のみに進む。
私たちは二重にリンクされたリストを持っていた場合、どこで すべてが事を指していた
ITとその前のものは、後 我々はそれをする必要はありません。
しかし、このケースでは、失いたくない ケースで私たちの前に来たもののトラック
我々は5のどこかに挿入する必要があります 真ん中に。
我々は9を挿入されたと言う。
ときに何が起こるか 我々は8になった？
>> 読者：あなたがする必要があるだろう そのヌルポイントを得る。
代わりに、あなたが持っているだろうヌル点を持っていることの 要素を追加してから持っている
それは9を指す。
>> JASON HIRSCHORN：その通りです。
だから我々は8を得る。
我々は、リストの最後に到達するため、 これはNULLを指している。
そして今、代わりになるのが、を指す ヌル我々はそれが私たちの新しいノードを指す必要があります。
そして、我々は中にポインタを設定 nullに私たちの新しいノード。
誰もが疑問を持っていますか 挿入はどうでしょうか？
私は気にしない場合はどう ソートされたリストを保持する？
>> 観客：でそれをスティック 先頭または末尾。
>> JASON HIRSCHORN：でそれをスティック 先頭または末尾。
その1、我々は何をすべき？
ボビー？
なぜ終わり？
>> 観客：ので、初め すでに満たされている。
>> JASON HIRSCHORN：わかりました。
初めはすでに満たされている。
誰がボビーに反論したいと考えています。
マーカス。
>> 観客：さてあなたはおそらくしたい 先頭に付いているので
そうでなければあなたがでそれを置けば あなたがする必要があるだろう終わり
リスト全体を横断する。
>> JASON HIRSCHORN：その通りです。
だから我々は、ランタイムを考えている場合は、 最後に挿入するランタイム
N、これのサイズになります。
挿入するビッグOランタイムは何ですか 先頭の？
一定の時間。
だから、維持を気にしない場合は、 ただへより良いものにソート、
このリストの先頭に挿入します。
そして、それは一定の時間で行うことができます。
>> [OK]をクリックします。
次の操作は、見つける他のどのです - 我々は、検索としてこれを言葉で表現しました。
しかし、我々は目を通すつもりだ いくつかのオブジェクトのリンクリスト。
君たちはのためのコードを見てきました 講義で前に検索します。
しかし、我々は一種だけでそれをやった 挿入、または少なくとも挿入
何か替え。
あなたを介して見て、ノードがノードを行く、 あなたがしている番号を見つけるまで、
探している。
あなたが到達した場合はどうなりますか リストの最後に？
私は9と私を探していますと言う リストの最後に到達する。
私たちは何をしますか？
>> 観客：falseを返します？
>> JASON HIRSCHORN：falseを返します。
我々はそれを見つけることができませんでした。
あなたがリストの最後に到達した場合 あなたがしている番号を見つけられませんでした
を探している、それはそこにない。
に関するご質問は見つける？
これはソートされたリストであった場合、どのようだろう 私たちの検索に異なること？
うん。
>> 観客：それは最初の値を見つけるだろう それは、2以上の
あなたが探していると、 その後、falseを返します。
>> JASON HIRSCHORN：その通りです。
だから、我々が取得する場合には、ソートされたリストの場合は、 何よりも大きいの何か
私たちが探している、我々はする必要はありません リストの最後に続ける。
私たちは、その時点でfalseを返すことができます 我々はそれを見つけるつもりはないので。
質問は今、我々は話をしましたされている 並べ替えリンクリストを保持することは、
ソートされていないそれらを維持。
それはあなたがしているものになるだろう おそらくについて考える必要があるとして
コー​​ディング問題があれば5を設定したとき 別々にハッシュテーブルを選ぶ
チェーン化のアプローチ、その 我々は、後で説明。
>> しかし、それはリストを維持するために価値がある ソートされ、多分持ってできるように
より速く検索する？
またはそれはすぐに挿入することをお勧めします 一定のランタイムで何かが、その後
検索長く持っている？
つまり、その権利があるトレードオフです より適切であるかを決めるために取得
特定の問題のために。
そして1は必ずしもありません 絶対的に正しい答え。
それは確かにあなたが得る決断だ にするために、そしておそらく良い守るために
その中で、たとえば、コメントや2理由 あなたは他の上1を選択しました。
>> 最後に、削除。
我々は、削除を見てきました。
それは、検索に似ています。
私たちは、要素を探します。
我々は6を削除しようとしていると言う。
だから我々はここ6を見つける。
私たちは必ず私たちをしなければならない事 何何をを指しているということです
6 - 私たちはステップで見るように ダウンここに2 -
6つのニーズを指しているのはどのような 今6をスキップして、に変更する
何でも6は、を指している。
私たちは、これまでの残りの部分を孤立させたくない それを設定し忘れることで私たちのリスト
前のポインタ。
して、時々、依存 プログラムでは、彼らはちょうどよ
完全にこのノードを削除してください。
時には、あなたが戻ってしたいと思う このノードでの値。
だから、作品を削除する方法を説明します。
上の任意の質問は削除しますか？
>> 観客：だから、削除しようとしている場合は、 それは、あなただけの自由な使用になるため
おそらくそれはmallocされたのですか？
>> JASON HIRSCHORN：あなたは無料にする場合 まったく正しいとあなたです、何か
それをmallocさ。
我々は、この値を返すように思ったと言う。
我々は、返される可能性があります6、その後自由 このノードとその上に自由に連絡してください。
または我々は、おそらく最初のフリー呼びたい して、6を返します。
>> [OK]をクリックします。
それでは、コーディングの練習に移りましょう。
我々は3つの機能をコーディングするつもりだ。
最初の1はinsert_nodeと呼ばれています。
だから、私はあなたを電子メールで送信するコードがあると、 後で、これを見ている場合
あなたはlinked.cにコードにアクセスすることができます CS50のウェブサイトで。
しかしlinked.cに、いくつかあります 既にのスケルトンコード
あなたのために書かれて。
して、カップルの関数があります あなたが記述する必要があります。
>> まず、するつもりだ insert_nodeを記述します。
そして、何insert_nodeん 整数値を挿入する。
そして、あなたは整数を与えている リンクされたリストに変換する。
特に、次のものが必要 ソートされたリストを維持する
最小から最大まで。
また、あなたはしたくない 任意の重複を挿入します。
最後に、insert_nodeを見ることができるように BOOLを返します。
だから、ユーザーが知っているようになっている インサートがあったか否か
trueまたはfalseを返すことにより、成功した。
このプログラムの終わりに -
この段階のためにあなたがする必要はありません 何を解放することを心配する。
あなたがやっているすべては、整数を取っている そして、リストに挿入する。
>> それは私が今することを求めているものです。
もう一度、linked.cにおいて、その必要 ならないすべては、スケルトンコードです。
そして、あなたは一番下の方に表示されるはずです サンプル関数の宣言。
しかし、それをコーディングに入る前に C言語で、私は非常に行くことをお勧めします
の工程を経て、我々はしてきた 毎週練習。
我々はすでにを通じて行ってきた これの絵。
だから、いくつか理解している必要があります これがどのように動作するかの。
しかし、私は書くことをお勧めだろう インチダイビング前にいくつかの擬似コード
そして、我々は以上行くつもり グループとしての擬似コード。
それから、あなたが書いた回は 擬似コード、そして我々は我々を書いたら
グループとしての擬似コードは、次の操作を実行でき C言語でそれをコーディングに入る
>> ヘッドアップ、insert_node関数として おそらくのトリッキーです
3我々は書くつもりですので、私 にいくつかの追加の制約を追加しました
特に、プログラミング、その あなたがいずれかを挿入するつもりはない
重複して、そのリスト ソートされたままにしてください。
だから、これは些細なプログラムであり、 あなたがコードする必要がある。
そして、なぜあなたは7に5を取ることはありません 分だけで動作させるために
擬似コードとコード。
そして、我々が開始されます グループとして行く。
もう一度、あなただけの質問がある場合 手を挙げて、私は周りに来る。
。
>> 我々はまた、一般的に、これらを行う -
または私は明示的に言うことはありません 人々と働くことができる。
しかし、明らかに、私は非常になることをお勧めします、 ご質問がある場合には、依頼する
隣人があなたの隣に座って あるいは誰かと仕事
他にあなたがしたい場合。
これは、個々である必要はありません サイレント活動。
>> それでは、いくつかを書き始めましょう ボード上の擬似コード。
誰が私の最初の行を与えることができます このプログラムの擬似コード？
この機能のために、むしろ - insert_node。
オールデン？
>> 観客：だから私がした最初のものだった ノードに新しいポインタを作成し、私
それは、同じを指す初期化 リストが指しているもの。
>> JASON HIRSCHORN：わかりました。
だから、新しいポインタを作成している リストにはなく、ノードに。
>> 観客：そうです。
うん。
>> JASON HIRSCHORN：わかりました。
した後、私たちは何をしたいのですか？
その後何ですか？
どのようなノードはどうでしょうか？
私たちは、ノードを持っていません。
我々だけで価値がある。
我々はノードを挿入したい場合は、何を行っており 私たちも、できる前に最初に行う必要があります
それを挿入する方法はないでしょうか？
>> 観客：ああ、申し訳ありません。
我々は、ノードのためのスペースをのmallocする必要があります。
>> JASON HIRSCHORN：優秀。
それではやってみましょう -
[OK]をクリックします。
その高に到達することはできません。
[OK]をクリックします。
私たちはダウン行くつもりしてから、している 我々は2つ​​の列を使用している。
私はそれを行くことができない -
[OK]をクリックします。
新しいノードを作成します。
リストには、別のポインタを作成することができます それが存在するか、あなただけのリストを使用することができます。
あなたは本当にそれをする必要はありません。
>> だから我々は、新しいノードを作成します。
素晴らしい。
それは我々が最初に何をすべきかだ。
次は何ですか？
>> 観客：待ってください。
我々は今、新しいノードを作成する必要がありますか 我々はそれを確認するために待機しなければならない
ノードのない重複はありません リスト上の我々はそれを作成する前に？
>> JASON HIRSCHORN：良い質問。
ので、後でそれを保持してみましょう 我々は作成されます時間の大半
新しいノード。
だから我々は、ここでそれをしておこう。
しかし、それは良い質問です。
我々はそれを作成し、我々は見つけた場合 何をすべき重複し、
私たちは、返す前にいますか？
>> 観客：それを解放。
>> JASON HIRSCHORN：うん。
おそらくそれを解放します。
[OK]をクリックします。
我々は、我々の後に何をしますか 新しいノードを作成しますか？
アニー？
>> 観客：我々は置く ノード内の数字？
>> JASON HIRSCHORN：その通りです。
我々は数を入れて - 私たちはスペースをのmalloc。
私はそれを残すつもりだ すべて1行として。
しかし、あなたは正しい。
それから、スペースををmallocし、 私たちは、インチ数を入れて
私たちも、ポインタを設定することができます nullにその一部。
それはまさにそうです。
した後、どのようなことをした後はどうでしょうか？
我々は、ボード上でこの絵を描きました。
だから我々は何をしますか？
>> 読者：私たちは、リストを通過します。
>> JASON HIRSCHORN：リストを通過します。
[OK]をクリックします。
そして、我々は、各ノードでのために何をチェックしますか。
クルト、私たちは何をチェックしますか 各ノードでのために？
>> 読者：のN値かどうかを参照してください そのノードはnの値よりも大きい
私たちのノードの。
>> JASON HIRSCHORN：わかりました。
私は何をするつもりだ -
[OK]を、ええ。
だから、Nさん -
値が大きい場合は私が言おうとしています このノードよりも、我々は何をしますか？
>> 観客：さて、私たちは、挿入 右その前の事。
>> JASON HIRSCHORN：わかりました。
だから、これより大きいなら、 その後、我々は挿入する。
しかし、我々は右の前にそれを挿入したい 我々はまた、である必要があるので、
追跡し、次いで、 前だったかの。
そうする前に挿入します。
だから我々は、おそらく何かを逃した それ以前に。
我々は、おそらく維持される必要がある 何が起こっているかを追跡。
しかし、我々はそこに戻って得られます。
それがどうした値よりも小さい？
クルト、私たちは、次の場合に何をしますか 値がより小さい？
>> 観客：それからちょうど続ける それは、最後の1でない限り。
>> JASON HIRSCHORN：私はそれが好きです。
だから、次のノードに移動します。
それは、最後の1でない限り -
我々は、おそらくそのためにチェックしている 条件の面で。
しかし、ええ、次のノード。
そして、それは、低すぎるなってきた 私たちはこっちに移動します。
しかし、もし -
誰もがこれを見ることができますか？
我々は等しいなら、私たちは何をしますか？
値は、私たちは、挿入しようとしている場合 このノードの値に等しいか？
うん？
>> 観客：[聞こえない]。
>> JASON HIRSCHORN：うん。
この与えられた -
マーカスは正しい。
私たちは、多分行っている可能性が 何か違う。
しかし、ここで、我々はそれを作成したことを考えると 我々は自由として返す必要があります。
ああ。
それが良いですか？
どのようにそれはです？
[OK]をクリックします。
我々は何をすべきか、空きと リターン、[聞こえない]？
[OK]をクリックします。
我々は何が不足している？
だからここで我々は追跡している 前ノードの？
>> 読者：私はそれが行くと思う 後に新しいノードを作成します。
>> JASON HIRSCHORN：わかりました。
だから、初めに我々は、おそらくよ -
ええ、私たちは新しい体へのポインタを作成することができます 前のノードポインタのようなノード、および
現在のノードのポインタ。
それでは、ここでそれを挿入してみましょう。
現在および以前の作成 ノードへのポインタ。
しかし、ときに我々はこれらのポインタを調整しますか？
我々は、コード内でそれをどこで行うのですか？
ジェフ？
>> 読者： - 値の条件？
>> JASON HIRSCHORN：どの 特に1？
>> 読者：私は困惑している。
値は、このノードよりも大きい場合 つまり、どこに行きたいということではありません
次のノードに？
>> JASONハーシュホーン：だから私たちの値である場合 このノードの値よりも大きい。
>> 観客：うん、あなたがしたいと思う 右、ラインのさらに下に行く？
>> JASONハーシュホーン：右。
だから我々はそれをここに挿入しないでください。
値は、このノードよりも小さい場合、 我々は次のノードに移動する - あるいは、私たち
前に挿入します。
>> 観客：これはこれであり、待ってください ノードとの値はありますか？
>> JASONハーシュホーン：良い質問。
この関数の定義あたりの値 我々は与えられているものである。
だから、値は我々が与えられている番号です。
そう値がこれより小さい場合 ノードは、我々は挿入する時間が必要です。
値は、このノードよりも大きい場合 我々は次のノードに移動します。
そして、元の質問に、 しかし、どこに -
>> 観客：値が大きい場合 このノードより。
>> JASONハーシュホーン：だから 我々はここで何をしますか？
甘い。
それは正しいです。
私は書くつもりだ 更新ポインタ。
しかし、はい、現在の1に あなたはそれを更新してしまう
次の1を指す。
我々は他の何欠落している？
だから私は、これを入力するつもりです geditのにコード。
私はこれを行うながら、あなたが持つことができます コー​​ディングで動作するようにカップル分以上
このCの
>> だから私は、入力の擬似コードを持っている。
私たちは始める前に、簡単なメモ。
我々は完全にできないことがあります すべてでこれを終える
これらの機能の3。
それらへの正しい解決策があります 私はあなたたちに出てメールでお知らせいたしますことを
セクションの後、それは意志 CS50.netに掲載される。
だから私はすることをお勧めしません。 のセクションを見に行く。
私はあなたにこれらを試してみることをお勧めします 所有してから練習を使用
あなたの答えをチェックする問題。
これらはすべて密接に設計されています に関連し、どのように付着
あなたは、問題のセットで行う必要があります。
だから私は、これを実践することをお勧めします 自分で、その後にコードを使用し
あなたの答えをチェックしてください。
私はハッシュへ移動したいないので、 節のある時点でのテーブル。
だから我々はそれをすべてを介して取得されない場合があります。
しかし、我々は今我々はできる限りやる。
>> [OK]をクリックします。
私たちは始めましょう。
ASAM、どのように我々は、新しいノードを作成するのですか？
>> 読者：あなたは*構造です。
>> JASONハーシュホーン：だから我々 ここでそれをアップする必要があります。
あ、ごめん。
あなたは、構造体*を言っていた。
>> 観客：そして、[？種類は？] ノードまたはCノード。
>> JASONハーシュホーン：わかりました。
私はそれを呼び出すつもりで、new_node 私たちは一貫して滞在することができます。
>> 観客：そして、あなたはそれを設定したい 、最初のノードを頭に。
>> JASONハーシュホーン：わかりました。
だから今、このポインティング - ので、この まだ新しいノードを作成していません。
これはちょうどを指している リスト内の最初のノード。
どのように新しいノードを作成するのですか？
私は、新しいノードを作成するためのスペースが必要な場合。
malloc関数。
そして、どのようにビッグ？
>> 観客：構造体のサイズ。
>> JASONハーシュホーン： 構造体のサイズ。
と構造体は何と呼ばれるのか？
>> 観客：ノード？
>> JASONハーシュホーン：ノード。
そうはmalloc（sizeof演算（ノード））; 私たちにスペースを提供します。
この行は -
一つのことは、この行が正しくありません。
構造体へのポインタで、new_nodeですか？
これは一般的な名前です。
それは何ですか -
ノード、正確に。
これは、*ノードの。
そして、我々は右の後に何をしますか 我々は牙山何かをは、malloc？
私たちが最初に行うことは何ですか？
それは何が動作しない場合は？
>> 観客：ああ、確認した場合、それ ノードを指す？
>> JASONハーシュホーン：その通りです。
ですから、ここで、new_node場合、equalsに等しい ヌル、私たちは何をしますか？
これはBOOL、この関数を返します。
その通りです。
よさそうだ。
そこに追加するものは？
我々は最後にものを追加します。
しかし、それは今のところよさそうだ。
現在と以前のポインタを作成します。
マイケルは、私はこれをどのように行うのですか？
>> 読者：あなたが持っているだろう ノードを行うには*。
あなたは1をしないように必要があるだろう ここで、new_nodeのためではなくのために
我々はすでに持っているノード。
>> JASONハーシュホーン：わかりました。
だから、現在のノードが、我々はにしている。
私はゴロゴロと呼ぶことにします。
わかりました。
我々は維持したいことを決定した 2、我々は知っている必要がありますので、
その前に何が。
彼らは何に初期化されますか？
>> 読者：私たちのリスト内の値。
>> JASONハーシュホーン：だから何です 私たちのリスト上の最初の事？
またはどのように我々は知っている場所 私たちのリストの先頭にはある？
>> 観客：それは渡されません 関数に？
>> JASONハーシュホーン：右。
それは、まさにここに可決された。
だから、それが関数に渡されたなら、 リストの先頭、我々は何をすべき
に等しい電流を設定します？
>> 観客：リスト。
>> JASONハーシュホーン：リスト。
それはまさにそうです。
今ではのアドレスを持っている 私たちのリストの先頭。
そして、何前のはどうでしょうか？
>> 観客：リストから1を引いた？
>> JASONハーシュホーン：あります その前に何もない。
だから我々は何も意味しないために何ができますか？
>> 観客：ヌル。
>> JASONハーシュホーン：うん。
それは良いアイデアのように聞こえる。
完璧。
ありがとう。
リストを通過します。
どのくらい私たちがしようとしているコンスタンティン、 リストを行く？
>> 観客：我々は、NULLに達するまで。
>> JASONハーシュホーン：わかりました。
forループ、しばらく、もしそうであれば。
私たちは何してるの？
>> 観客：たぶん、forループ？
>> JASONハーシュホーン：のループのためにやってみましょう。
[OK]をクリックします。
>> 観客：そして、我々はのために言う -
現在のポインタになるまで NULLと同じではありません。
>> JASONハーシュホーン：だから我々は知っている場合 条件、どのように我々は、ループを書くことができます
その状態オフに基づいて。
我々は、ループのどのような種類を使用すればよいですか？
>> 観客：ながら。
>> JASONハーシュホーン：うん。
つまり、ベースより理にかなって あなたが言ったことのオフ。
私たちはちょうど私達に行きたい場合は、だろう ちょうどその事を知っている、それはなるだろう
whileループを実行する感覚。
電流が等しくないNULLをする間、 値は、このノード未満である場合。
Aksharは、私にこのラインを与える。
>> 観客：電流If-> N N値よりも小さい。
またはその逆を行います。
そのブラケットを切り替えます。
>> JASONハーシュホーン：申し訳ありません。
>> 観客：ブラケットを変更します。
>> JASONハーシュホーン：だからそれはだ場合には 値より大きい。
それはと混同だから 上記のコメントは、私はそれをするつもりです。
しかし、はい。
我々は、この値よりも小さい場合 ノード、我々は何をしますか？
ああ。
私は右のそれをここに持っている。
前に挿入します。
[OK]をクリックします。
我々はそれをどのように行うのですか？
>> 観客は：それはまだ私ですか？
>> JASONハーシュホーン：うん。
>> 読者：あなた -
ここで、new_node->次。
>> JASONハーシュホーン：だから何だ それが等しくなるように行きますか？
>> 観客：これは、等しい電流になるだろう。
>> JASONハーシュホーン：その通りです。
だから他の -
我々は更新するために他に何が必要なのですか？
>> 観客：過去がnullに等しいかどうかを確認します。
>> JASONハーシュホーン：前の場合 -
その前がnullに等しい場合。
>> 観客：それは起こっていることを意味 頭になるために。
>> JASONハーシュホーン：その手段 それが頭になってきた。
それでは、私たちは何をしますか？
>> 読者：私たちは、頭を行うには、ここで、new_nodeに等しい。
>> JASONハーシュホーン：ヘッド ここで、new_nodeに等しい。
そして、なぜ表示されませ、ここに向かう？
>> 観客：頭がグローバルであるため 出発点である変数、。
>> JASONハーシュホーン：甘い。
[OK]をクリックします。
そして -
>> 観客：次に、あなたが他の何前のページ - > 次のここで、new_nodeは等しくなります。
そして、あなたはtrueを返します。
>> JASONハーシュホーン：DO 我々はここで、new_node終わりを設定されていますか？
>> 読者：私はでしょう -
私は、開始時にそれを設定してください。
>> JASONハーシュホーン：だから何行？
>> 読者：IF文の後 それが知られているかどうかをチェックする。
>> JASONハーシュホーン：右ここに？
>> 読者：私は何をしたいで、new_node-> N 値に等しい。
>> JASONハーシュホーン：良さそうですね。
おそらくそれは理にかなっている - 私たちにはありません 私たちがしているものをリスト知っておく必要があります
我々は扱っているので、 1リストで。
のためのとても優れた関数宣言 これはちょうどこのを取り除くことです
完全に、ちょうど挿入 頭に値。
私たちも知っている必要はありません 我々はインチているもののリスト
しかし、私は今のためにそれを維持します その後、更新の際にそれを変更
スライドとコード。
だから、今のよさそうだ。
場合には、値 - この行を行うことができますか？
もし -
私たちは、ノアは、ここで何をしますか。
>> 観客：値が大きい場合 Nゴロゴロ - >より -
>> JASONハーシュホーン：どうすれば 我々は次のノードに行く？
>> 観客：CURR-> nは ここで、new_nodeに等しい。
>> JASONハーシュホーン：だからnは 構造体のどの部分？
整数。
そしてここで、new_nodeは、ノードへのポインタである。
だから我々はゴロゴロのどの部分を更新する必要がありますか？
そうでなければnを指定すると、他の部分は何ですか？
ノア、他の部分は何でしょう。
>> 観客：ああ、次の。
>> JASONハーシュホーン：次に、その通りです。
その通りです。
次の右の1である。
そして、我々は他に何が必要なのですか 、ノアを更新する？
>> 観客：ポインタ。
>> JASONハーシュホーン：だから 我々は現在を更新しました。
>> 観客：前のページ - >次。
>> JASONハーシュホーン：うん。
[OK]を、我々は一時停止します。
誰がここに私たちを助けることができますか？
マヌー、我々は何をすべきか？
>> 読者：あなたが設定するんだ ゴロゴロ - >次に等しいこと。
しかし、前の行の前にそれを行う。
>> JASONハーシュホーン：わかりました。
何か他には？
Akshar。
>> 読者：私はあなたがいるとは思わない ゴロゴロ - > [次へ]を変更することを意味した。
私はあなたがゴロゴロ等号を行うことを意図していると思う ゴロゴロ - >次のノードに移動]の横にある。
>> JASONハーシュホーン：だから申し訳​​ありませんが、どこで？
何行に？
この行は？
>> 観客：うん。
ゴロゴロがゴロゴロ - >次に等しいことを確認します。
>> JASONハーシュホーン：だからそれは正しいです 電流があるため、
ノードへのポインタ。
そして、我々はそれが次のを指すようにしたい 現在なってきたもののノード
を指摘した。
ゴロゴロ自体は、次のを持っています。
しかし、我々はcurr.nextを更新した場合、我々は 実際のノートを更新することになる
それ自体ではなく、ここ ポインタが指していた。
何でも、この行について。
AVI？
>> 観客：前のページ - >次のゴロゴロに等しい。
>> JASONハーシュホーン：だから、もう一度、前の場合はA ノードへのポインタ、前へ - >次です
ノード内の実際のポインタ。
だから、これは更新されます ゴロゴロノード内のポインタ。
我々は更新しない ノード内のポインタ。
我々は前回の更新したいと思います。
だから我々はそれをどのように行うのですか？
>> 観客：それはちょうど前のことになる。
>> JASONハーシュホーン：右。
前のノードへのポインタである。
今、私たちは、それを変更している ノードへの新しいポインタ。
[OK]を私たちは下に移動してみましょう。
最後に、この最後の条件。
ジェフは、我々はここで何をしますか？
>> 観客：値がある場合 ゴロゴロ - > Nに等しい。
>> JASONハーシュホーン：申し訳ありません。
善良私のオハイオ州。
何が？
値==ゴロゴロ - > N。
私たちは何をしますか？
>> 読者：あなたは私たちで、new_nodeを解放したい、 そして、あなたはfalseを返すと思います。
>> JASONハーシュホーン：これは何であるか 我々はこれまでに書かれている。
誰も何も持っていますか 我々が作る前に追加するには？
[OK]をクリックします。
やってみよう。
コントロールが最後に到達する可能性 void以外の関数の。
AVI、何が起こっているの？
>> 読者：あなたはリターンを置くことになっている whileループの外に本当？
>> JASONハーシュホーン：私は知らない。
あなたは私をしたいですか？
>> 観客：気にしないで。
いいえ。
>> JASONハーシュホーン：Akshar？
>> 読者：私はあなたがする意味と思う 最後にfalseを返す入れる
whileループの。
>> JASONハーシュホーン：だからここで あなたはそれが行きたいですか？
>> 読者：whileループの外のように。
だから、その手段には、whileループを終了した場合 あなたが最後に到達したことと、
何も起こらなかっただ。
>> JASONハーシュホーン：わかりました。
だから我々はここで何をしますか？
>> 読者：あなたはfalseを返す そこにも。
>> JASONハーシュホーン：ああ、私たち 両方の場所でそれを行う？
>> 観客：うん。
>> JASONハーシュホーン：わかりました。
私達は行くべきでしょうか？
善良私のオハイオ州。
ごめんなさい。
私は、画面をおかけして申し訳ございません。
それは、私たちに怖がらのようなものだ。
だから、オプションを選択します。
ゼロは、コードごとに、プログラムを終了します。
一つは、何かを挿入します。
それでは3を挿入してみましょう。
インサートは成功しませんでした。
私はプリントアウトするつもりです。
私は何も持っていません。
[OK]をクリックします。
多分それはちょうどまぐれだった。
1を挿入します。
成功していない。
[OK]をクリックします。
それでは本当にすぐに、GDBを介​​して実行しましょう 何が起こっているかをチェックします。
>> あなたのGDBを覚えています。/名 プログラムは、GDBに私たちを取得します。
たくさん処理するということです？
明滅していますか？
多分。
目を閉じて、いくつかの深いを取る あなたは疲れている場合呼吸
それを見ての。
私は、GDBにいるよ。
私は、GDBで最初に行うことは何ですか？
我々は把握するんだ ここで何が起こっている。
見てみましょう。
私たちは、図のように6分を持っている 何が起こっているか。
主に折り返されます。
そして私は何をしますか？
カルロス·？
実行します。
[OK]をクリックします。
のオプションを選択してみましょう。
とN何をするのでしょうか？
次へ。
うん。
>> 読者：あなたは言及しなかった -
あなたは頭が、それがあったことを言わなかった 先頭にnullに初期化されます。
しかし、私はあなたがそれがOKと言ったと思った。
>> JASONハーシュホーン：行きましょう - それでは見てみましょう GDBにし、私たちは戻って行きます。
しかし、あなたはすでに持っているように聞こえる 何が起こっているかについていくつかのアイデア。
だから我々は何かを挿入したい。
[OK]をクリックします。
私たちは、挿入している。
int型を入力してください。
我々は3を挿入します。
そして私は、この行によ。
どのようにしてデバッグを開始する行くのですか インサートは、機能の公知？
善良私のオハイオ州。
それはたくさんある。
多くのことを怖がらことですか？
>> 観客：ああ、それは死んだ。
>> JASONハーシュホーン：ちょうど私 それを取り出した。
[OK]をクリックします。
>> 観客：多分それはだ 線のもう一方の端。
>> JASONハーシュホーン：うわー。
だから、一番下の行 -
何て言ったの？
>> 読者：私は言った技術的の皮肉 このクラスの難しさ。
>> JASONハーシュホーン：私は知っている。
場合にのみ、私はその部分を制御していた。
[聞こえない]
それは素晴らしいサウンド。
なぜあなたたちは考えて起動しない 我々は間違って行ったかもしれないもの、
そして我々は戻って90秒になります。
>> Avica、私はどのように行くをお願いするつもりです それをデバッグする内部insert_node。
我々は最後の中断したところにするためです。
どのように私はinsert_node、Avica内側に行くのですか、 何が起こっているのか調べるために？
どのようなGDBコマンド？
ブレークは内部の私を取らないだろう。
マーキスは知っていますか？
>> 観客：何？
>> JASONハーシュホーン：どのようなGDBコマンド 私は、この関数の中で行くことに使うのか？
>> 観客：ステップ？
>> JASONハーシュホーン：経てステップ 内部の私を取るS.。
[OK]をクリックします。
いくつかの領域をmallocingで、new_node。
すべては行くようになっていること。
それではここで、new_nodeを調べてみましょう。
これは、いくつかのメモリ·アドレスを得た。
それでは確認してみましょう -
つまり、すべて正しい。
だからここにすべてがいるようだ 正しく動作して。
>> 観客：違いは何ですか Pとディスプレイとの間に？
>> JASONハーシュホーン：Pは、印刷の略です。
だからあなたは何を求めている その本の違いは？
この場合は、何もない。
しかし、一般的に存在する いくつかの違い。
そして、あなたは、GDBのマニュアルになっているはずです。
しかし、この場合は、何もない。
我々は、しかし、印刷を使用する傾向があるので、 我々はより多くを実行する必要はありません
単一の値を印刷します。
>> [OK]をクリックします。
だから我々は、我々のコードの行80にある リストに等しいノード*のCURRを設定。
私たちがゴロゴロをプリントアウトしてみましょう。
これは、リストに相当します。
甘い。
待つ。
それは何かと等しい。
それは正しいていないようです。
そこに私達は行く。
GDBで、右のであれば、だ それはあなたがそれにしているラインです
まだ実行されていません。
だから、実際に入力する必要が 行を実行するために、次の
その結果を見てください。
そこでここでは、ある。
私達はちょうどこの行を実行する、 以前はNULLに等しくなります。
だからもう一度、私たちは前の印刷した場合 私たちは奇妙な何も表示されません。
しかし、我々は実際にそれを実行した場合 ライン、そして我々が表示されます
その行が働いたことを。
>> だから我々はゴロゴロしています。
それらは両方の良いです。
右？
今、私たちはここ、この行にしている。
ゴロゴロが同じヌルをしていませんが。
さて、ゴロゴロ等しい何でしょうか？
我々はちょうどそれがnullで等しかった。
我々はそれをプリントアウト。
私は再びそれをプリントアウトします。
そうです、そのwhileループ 実行しよう？
>> 観客：いいえ。
>> JASONハーシュホーン：だから私は、その入力された 行すると、我々はすべての方法をジャンプ参照してください。
一番下まで、falseを返します。
そして、我々は、falseを返すつもりだ 私たちのプログラムに戻って、
我々が見たように、最終的には、プリントアウトし、 インサートは成功しませんでした。
だから、誰が何の上の任意のアイデアを持っている 我々はこれを修正するために必要？
私が表示されるまで待つつもりだ 手のカップルは上がる。
我々はこれを実行されませんでした。
覚えておいて、これが最初だった 私たちはやっていた事。
私はカップルをやるつもりはない。
私はいくつかをするつもりです。
カップルが2を意味するので。
私は以上の2のために待っています。
>> 第一の挿入、ゴロゴロ、 デフォルトではNULLに等しくなります。
このループは実行され ゴロゴロがnullでない場合。
だから、どうやってこの問題を回避することができますか？
私は3の手を参照してください。
私は以上の3のために待っています。
マーカス、あなたはどう思いますか？
>> 観客：さて、あなたはそれを必要とする場合に 複数回実行するだけで
DO-whil​​eループに変更します。
>> JASONハーシュホーン：わかりました。
それはしかし、我々の問題を解決するのだろうか？
>> 読者：この場合、何のためにしない リストが空であるという事実。
だから、あなたはおそらくだけ追加する必要があります if文ループが終了すること
その後、終了時にする必要が あなたを、その時点でリスト、
ちょうどそれを挿入することができます。
>> JASONハーシュホーン：私はそれが好きです。
それは理にかなっています。
ループが終了した場合 -
それがここにfalseを返すだろうから。
だから、ループが終了した場合、我々はにいる 多分リストの最後、または
中の何もない場合は、リストの先頭 終わりにすることと同じであり、。
だから今我々は、挿入したい ここで何か。
それでは、どのそのコードは、マーカスが見えますか？
>> 読者：あなたはすでにノードを持っている場合 mallocさ、あなただけの言うことができる
ここで、new_node->次のため、ヌルに等しい それが最後である必要があります。
あるいはここで、new_node->次のヌルに等しい。
>> JASONハーシュホーン：わかりました。
申し訳ありません。
ここで、new_node->次のヌルに等しい 我々は最後にだから。
つまり、それをインチ入れていません
どのように我々は、リストに入れていますか？
右。
それはちょうど等しく、それを設定することです。
実際にどのように我々はありません リストに入れて？
を指しているのか リストの最後に？
>> 観客：ヘッド。
>> JASONハーシュホーン：申し訳ありませんが？
>> 観客：頭を指している リストの最後に。
>> JASONハーシュホーン：何もでがない場合 リスト、ヘッドはを指している
リストの最後。
だからために働くよ 第一の挿入。
いくつかありますかについてあれば リストにあるもの？
我々は設定しないよりも、 ここで、new_nodeに等しい頭。
我々はそこに何をすべきかをしたいですか？
うん？
おそらく以前の。
それは動作しますか？
以前はただであることを思い出してください ノードへのポインタ。
そして以前はローカル変数です。
したがって、この行は、ローカル変数を設定します、 、前回と同じか、
この新しいノードを指す。
つまり、実際にそれを置くことはありません 私たちのリストにある、しかし。
どのように我々は私たちのリストに入れていますか？
Akchar？
>> 読者：私はあなたを思う 次の電流 - >を行います。
>> JASONハーシュホーン：わかりました。
ゴロゴロ - >次。
だからもう一度、私たちがダウンしている唯一の理由 ここに等しい電流が何です？
>> 観客：ヌル等しい。
>> JASONハーシュホーン：だから何 我々は次のヌル->を行う場合はどうなりますか？
我々は、取得するつもりですか？
私たちは、セグメンテーションフォールトを取得します。
>> 読者：飲酒CURRがnullに等しい。
>> JASONハーシュホーン：それは同じことだ 前のように、しかし、そこだから
我々は設定しているローカル変数 この新しいノードに等しい。
私たちの絵に戻りましょう 何かを挿入する。
我々は最後に挿入していると言う リストのため、まさにここ。
私たちは、の現在のポインタを持っている nullにポイントして、前のポイント
つまり、8を指しています。
それでは我々は、AVIを更新する必要がありますか？
>> 観客：前 - >次は？
>> JASONハーシュホーン：前 - >次は何がある 我々はそのため更新する
実際にそれを挿入します リストの最後。
我々はまだ、しかし、1バグを持っている 我々はに実行するつもりという。
そのバグは何ですか？
うん？
>> 観客：それは返すために起こっている この場合、偽？
>> JASONハーシュホーン：ああ、あるさ falseを返しに行く。
しかし、別のバグがあります。
だから我々は真のお返しに配置する必要があります。
>> 観客：か前のまだ等しい リストの一番上にはnull？
>> JASONハーシュホーン：だから前の、まだ 先頭にヌルに等しい。
では、どのようにそれを乗り越えることができますか？
うん？
>> 読者：私はあなたがチェックを行うことができると思います それはだ場合は、whileループを確認します前に、
空のリスト。
>> JASONハーシュホーン：わかりました。
それでは、ここに行きましょう。
チェックを行う。
もし -
>> 観客：そうであればヘッド ヌルに等しい等しい。
>> JASONハーシュホーン：もし頭 ヌルに等しい等しい -
それは、空のリストだ場合には、私たちに教えてあげましょう。
>> 観客：それから、あなた 何頭が新たに等しい。
>> JASONハーシュホーン：ヘッド ここで、new_nodeに等しい？
そして他に何私たちは何をする必要があります？
>> 観客：それから、あなたはtrueを返します。
>> JASONハーシュホーン：非常にされていません。
私たちは、一歩を逃している。
>> 読者：ここで、new_node次の NULLを指しています。
>> JASONハーシュホーン：その通り、オールデン。
そして、我々は真を返すことができます。
[OK]をクリックします。
しかし、それはまだ物事を行うことをお勧めします リストの最後に、右か？
わかりました。
我々はまだ実際に得るかもしれない リストの最後に。
我々がしているのであれば、このコードの罰金です リストの最後といくつかあります
リストにあるもの？
右？
我々はまだマーカスのアイデアを持っているので。
我々は、理由このループを終了することがあり 私たちは、リストの最後にいる。
だから我々はまだこれをしたいですか ここでダウンしてコーディングする？
>> 観客：はい。
>> JASONハーシュホーン：うん。
そして、我々は、これを変更するには何が必要ですか？
真。
ないことを、音の良い 誰もがこれまでのところ？
誰もがいずれかを持っている -
aviファイルは、あなたが追加したいアイテムがありますか？
>> 観客：いいえ。
>> JASONハーシュホーン：わかりました。
だから我々はいくつかの変更を加えました。
我々は、我々の前に、このチェックを作りました 空のリストについては、中行ってきました。
だから我々は空のリストの世話をしてきました。
そしてここでは、挿入の世話をした リストの最後に何か。
だから、このwhileループの撮影のように思える 間にあるものの世話、
リスト内のどこかにある場合があり リスト中のものがあります。
>> [OK]をクリックします。
私たちはもう一度、このプログラムを実行してみましょう。
成功していない。
>> 読者：あなたはそれをしなかった。
>> JASONハーシュホーン：ああ、 私はそれをしなかった。
良い点、マイケル。
の、リンクされたメイクを追加してみましょう。
ライン87にエラーがあります。
ライン87。
オールデン、これはあなたが私を与えたラインだった。
何が気に入らないのだ。
>> 観客：それはnullにしなければならない。
>> JASONハーシュホーン：優秀。
まったく正しい。
それはNULLでなければなりません。
それでは、もう一度作ってみましょう。
コンパイルします。
[OK]をクリックします。
それでは3を挿入してみましょう。
挿入に成功しました。
のは、それをプリントアウトしてみましょう。
ああ、我々は確認できた場合に限ります。
しかし、我々は行っていない まだ印刷機能。
それでは何か他のものを入力してみましょう。
私たちは何を入力するべきか？
>> 観客：セブン。
>> JASONハーシュホーンセブン？
>> 観客：はい。
>> JASONハーシュホーン：私たちはワンセグ障害を持っている。
だから我々は1つを得たが、我々を明確に 2を取得することはできません。
それが午前5時07分です。
だから我々はこれをデバッグすることができ 3分間。
しかし、私はここで私たちを残しするつもりだ とハッシュテーブルに移動します。
しかし、再び、このコードのための答え 私は少しであなたにそれをメールでお知らせいたします。
我々はそれに非常に近い。
私は非常に把握することをお勧めします 何がここで起こって、それを修正だ。
だから、私はあなたにこのコードをメールでお知らせいたします よくプラスソリューション -
おそらく後でソリューション。
最初にこのコード。
>> 私は、私たちの前にやってみたい他の事 仕上げは、我々は何も解放されていないです。
だから私はあなたに何を表示したい Valgrindのは次のようになります。
私たちは、Valgrindの境界を実行すると 私たちのプログラムで、。/リンク。
繰り返しますが、このスライドによると、我々 いくつかのタイプのValgrindのを実行する必要があります
この場合はオプション、 - =フル漏れをチェックします。
それでは、Valgrindのを書いてみましょう - =フル漏れをチェックします。
だから、これはValgrindのを実行します 私たちのプログラムに。
そして今、プログラムが実際に実行されます。
だから我々は同じようにそれを実行しようとしている 前、インチ何かを置く
私は3に置くつもりです。
それが動作します。
私は何かに配置しようとするつもりはない 他に、我々はするつもりだので、
その場合、ワンセグ偽を得る。
だから、僕はやめるつもりです。
>> そして今、あなたはここでダウンして参照してください。 リークとヒープの要約。
これらは良いものであることを あなたがチェックアウトしたい。
だから、ヒープの要約 - それが言う、使用中 出口で - 1ブロックの8バイト。
その1ブロックです ノード我々はmallocさ。
ノードが8である前に言ったマイケル、 それは、整数を持っているので刺さ
ポインタ。
だから、私たちのノードの。
そして、それは我々がmalloc関数を使っ言う 我々は解放された7回
何か6回。
しかし、我々は自由と呼ばれたことがないので、私は持っていない これが何について話しているのか考え。
>> しかし、そのときに言えば十分 プログラムが実行され、malloc関数が呼び出されている
その我々いくつかの他の場所で 心配する必要はありません。
だから、malloc関数は、おそらくと呼ばれていた いくつかの場所で。
我々はどこに心配する必要はありません。
しかし、これは本当に私たちである。
この最初の行は私たちです。
私たちは、そのブロックを残しました。
そして、あなたはそのここで見ることができます リーク要約する。
まだ到達 -
1ブロックの8バイト。
つまり、そのメモリを意味します -
私たちは、そのメモリをリークしています。
確かに失われた -
何かは永久に失われます。
一般的には、あなたではないでしょう そこには何も表示されます。
まだ到達は一般的です あなたが欲しいよなものを、表示されます
どのようなコードを使用するとすべき見ることに目を向ける 解放されていますが、解放するのを忘れています。
>> そして、これは、そうではありませんでした場合は、 我々は自由なすべてをした場合には、
我々はそれを確認することができます。
ちょうどプログラムを実行してみましょう 何を入れていない。
あなたが出口で、ここで使用されているダウン表示されます -
ゼロブロック内のゼロバイト。
それは我々が何も残っていなかったことを意味 このプログラムは終了したとき。
そうpset6に電源を入れる前に、valgrindのを実行する そしてあなたが持っていないことを確認してください
任意のメモリは、プログラム内でリークが発生します。
あなたはValgrindので不明な点がございましたら、 手を差し伸べるお気軽に。
しかし、これはあなたがそれを使用する方法である。
非常に単純な - あなたかどうかを確認 出口で使用されている -
任意のブロック内の任意のバイト。
>> だから我々は、挿入ノード上で作業していた。
私はここ2他の機能を持っていた - ノードと自由なノードを印刷します。
再度、これらは関数である あなたが練習するために良いことになるだろう
彼らはだけでなく、あなたを助けるとなるため、 これらのサンプルの練習だけでなく、
問題に設定してください。
彼らは物事にかなり密接に地図 あなたがで行う必要があるとしている
問題は、設定してください。
しかし、私は確認したいです 我々はすべてのものに触れる。
ハッシュテーブルも非常に重要である 我々はここでこれを何をやっている
週 - または問題セット中。
>> だから我々は、セクションを終了しようとしている ハッシュテーブルの話。
あなたが気づけば私が作​​ら 小さなハッシュテーブル。
それは我々が話しているものではありません しかしながら、約。
我々は、さまざまな話をしている ハッシュテーブルのタイプ。
そして、そのコア、ハッシュテーブルで 以外の何ものでもありません
配列プラスハッシュ関数。
我々だけに少しのために話をするつもりだ 誰もが何Aを理解し確認してください
ハッシュ関数である。
そして私はそれがあることを今、あなたの言っている 二つのこと以外の何物でもない -
配列とハッシュ関数。
そして、ここでの手順は、通っている これはどのように動作する。
>> 私たちの配列があります。
私達の機能があります。
具体的には、ハッシュ関数を実行する必要があり これで物事のカップルを行う。
私は、特に話をするつもりだ については、この問題は、設定してください。
それはおそらくだろう 文字列になります。
そして、何それは返すために起こっているの？
どのようなデータ型？
オールデン？
あなたのハッシュ関数の戻り？
整数。
だから、これはどのようなハッシュです 表には、で構成されています -
配列の形式で表 ハッシュ関数。
それはどのように動作します？
これは、3段階で動作します。
我々はそれにキーを付けます。
この場合、我々はそれを文字列を与えるでしょう。
我々はステップ1あたりのハッシュ関数を呼び出す キーに、我々は値を取得します。
>> 具体的には言うよ 我々は、整数を取得します。
その整数は、非常に特殊な存在 その整数ができるものに制限されます。
この例では、我々のアレイ サイズ3のものである。
だから、その整数は何の数字をすることができます。
の有効な値の範囲は何ですか その整数は、このコマンドの戻り値の型
関数をハッシュ？
ゼロ、1および2。
ハッシュ関数のポイントがある 配列内の場所を把握
ここで私たちのキーが起こっている。
唯一の3つの可能性があります。 ここの場所 -
ゼロ、1、または2。
そのため、この機能は、より良いリターン ゼロ、1、または2。
この配列内のいくつかの有効なindice。
>> そして、それが返す場所に応じて、 あなたが開いて、配列を確認することができます
値を一括。
我々は、キーを置く場所です。
だから我々は、カボチャを投げる、 我々はゼロを出す。
アレイ·ブラケット0で、我々はカボチャを置く。
我々は1を出す、猫を投げる。
我々は1で猫を置く。
私たちは、クモに置く。
我々は2つ​​を出す。
我々は、アレイブラケット2でクモを置く。
それは、もしそうであればいいだろう それはそのように働いた。
残念ながら、我々は、表示されますように それは少し複雑です。
>> 我々は、そこにどんな質問を受ける前に、 この基本について
ハッシュテーブルのセットアップ？
これはまさにのイメージです 我々は、ボード上で描いたものを。
しかし、我々は、ボード上のIそれを描いたので、 さらにそこに行くつもりはありません。
基本的にキー、魔法のブラックボックス - あるいはこの場合は、ティールボックス - の
ハッシュ関数は、バケットに格納します。
そしてこの例では、ね ネーム入れはできません。
私たちは、関連付けられている携帯電話を入れている バケット内の名前の数。
しかし、あなたは非常によくできただけで バケツに名前を入れ。
>> これは何のちょうど写真です 我々は、ボード上で描きました。
我々は、しかし、潜在的な落とし穴があります。
そして二人は特にあり 私は上の行きたいことをスライドさせる。
最初の1程度である ハッシュ関数。
だから私は、質問を何 良いハッシュ関数を作る？
私は2つの答えを与える。
最初は、それが決定論的であるということです。
ハッシュ関数の文脈において、 これは何を意味するのでしょうか？
はい？
>> 観客：それは見つけることができます 一定の時間内のインデックス？
>> JASONハーシュホーン：それ それが何を意味するのかではありません。
しかし、それは良いの推測だ。
誰が推測してい これが何を意味する？
その優れたハッシュ関数 決定論的である？
アニー？
>> 観客：キーのみをマッピングすることが可能であること。 ハッシュテーブル内の1位に。
>> JASONハーシュホーン：それです。 まったく正しい。
あなたは、カボチャを入れたびに、 それは常にゼロを返します。
あなたは、カボチャとあなたのハッシュに入れた場合 関数はゼロを返しますが、持って
何かを返す確率 ゼロより誰より -
ので、多分それは時々1を返すことができます または2他の回 -
それは良いハッシュ関数ではありません。
あなたは正確に正しい。
あなたのハッシュ関数は、返す必要があります この場合は、同じ正確な整数、用
まったく同じ文字列。
>> 多分それは、同じ正確な整数を返します。 まったく同じ文字列の
にかかわらず、時価総額の。
しかし、その場合、それはまだだ 確定的なので、複数の事
同じ値にマッピングされます。
それはいい。
限りつだけが存在するように 与えられた入力に対する出力。
>> [OK]をクリックします。
2つ目は、それ 有効なインデックスを返します。
我々は、以前育てた。
このハッシュ関数 -
ああ -
ハッシュ機能するはず 有効なインデックスを返す。
そう言う -
のは、この例に戻りましょう。
私のハッシュ関数は、カウントアップ 単語の文字。
つまり、ハッシュ関数です。
そして、その整数を返します。
私は言葉のAを持っているのであれば、それはだ 1を返すつもり。
そしてそれは、ここで権利を置くために起こっている。
私は単語のバットに入れたら？
それは3を返すために起こっている。
バットはどこに行くのでしょうか？
>> それは適合しません。
しかし、それはどこかに行く必要がある。
これは結局、私のハッシュテーブルであり、 すべてがどこかに行く必要がある。
だからここでバットを行くべき？
任意の考え？
推測？
良い推測？
>> 観客：ゼロ。
>> JASONハーシュホーン：なぜゼロ？
>> 観客：3ので、 モジュロ3はゼロです？
>> JASONハーシュホーン：スリー モジュロ3はゼロです。
それは素晴らしいの推測ですが、 それは正しいです。
したがって、このケースでは、べき おそらくゼロに行く。
、このハッシュを確実にするので、良い方法 関数は、有効なインデックスを返している
テーブルのサイズによって、それを法である。
あなたはどのようなことで、この戻り値を法場合 3、あなたは常に取得するつもりだ
ゼロ、1、および2の間に何か。
そして、これは常に7を返し、あれば あなたはいつもあなたがしている、3でモジュロ
いつも同じものを手に入れるつもり。
>> だから、まだ確定的だ あなたは法とする場合。
しかし、それは、あなたことを保証します 何かを得ることはありません -
無効な業界。
一般的に、モジュロが起こるべきであること あなたのハッシュ関数の内部。
だから、このことを心配する必要はありません。
あなただけのことを確認することができます これは有効なindiceです。
この上の任意の質問 潜在的な落とし穴？
>> [OK]をクリックします。
そしてそこに私達は行く。
次の潜在的な落とし穴、および これは大きなものです。
どのような場合、2つのキーマップ 同じ値に？
だから、これを処理する2つの方法があります。
最初の1は、リニアと呼ばれている 私はこれ、プロービング
以上行くつもりはない。
しかし、あなたはどのように精通している必要があります それが動作し、どのようなものがある。
>> 私は以上行くつもり秒1 それは多くの1であるため、
人々は、おそらく決定することになります 彼らの問題のセットで使用する。
もちろん、あなたがする必要はありません。
しかし、問題のセット、多くの人々のため ハッシュテーブルを作成することを選択する傾向がある
実装するために別々の連鎖で 彼らの辞書。
だから我々はそれが何を意味するのか上に行くつもりだ と、ハッシュテーブルを作成する
別々の連鎖。
>> だから私は、カボチャを入れ。
これは、0を返します。
そして、私はここにカボチャを置く。
それから私は、中に入れ -
別のハロウィーンをテーマにした事は何ですか？
>> 観客：キャンディ。
>> JASONハーシュホーン：キャンディ！
それは素晴らしい1です。
私はキャンディー、キャンディーを入れ また、私にはゼロになります。
私は何をしますか？
任意のアイデア？
あなたはすべての種類の知っているので、 どのような別々の連鎖である。
そのためにはどのような任意のアイデア？
うん。
>> 観客：文字列を置く 実際にハッシュテーブルに。
>> JASONハーシュホーン：だから我々はするつもりだ こっち良いアイデアを描く。
[OK]をクリックします。
>> 観客：ハッシュテーブルを持っている [聞こえない]
を指すポインタ リストの先頭。
した後、カボチャは最初の値である必要な そのリンクリストやキャンディーであること
そのリンクリストの2番目の値。
>> JASONハーシュホーン：わかりました。
傑出していたマーカス、。
私はそれを打破するつもりです。
マーカスはしないでくださいと言っている カボチャが上書きされます。
それは悪いでしょう。
どこか別のお菓子を入れないでください。
我々はゼロでそれらの両方を置くつもりです。
しかし、我々は対処するつもりだ ゼロでそれらを置くこと
ゼロからリストを作成する。
そして、我々はリストを作成しましょう ゼロにマップされたすべてのもの。
そして、我々は作ることを学んだ最良の方法 成長し、縮小することができ、リスト
動的内にない 別の配列。
そうではない多次元配列。
しかし、単にリンクされたリストを作成します。
>> それでは、彼が提案した -
私は新しいを取得するつもりだ -
ポインタを持つ配列を作成することです、 ポインタの配列。
[OK]をクリックします。
どのようなタイプの任意のアイデアやヒント このポインタでなければならない？
マーカス？
>> 観客：へのポインタ -
>> JASONハーシュホーン：あなたので、 リンクリストは言ったので -
>> 読者：ノードポインタ？
>> JASONハーシュホーン：ノードポインタ。
もし私たちのリンクにあるもの リストそれらのノードである
ノードポインタでなければなりません。
そして、彼らは、最初は何を等しくしますか？
>> 観客：ヌル。
>> JASONハーシュホーン：ヌル。
だから私たちの空の事があります。
カボチャは、ゼロが返されます。
私たちは何をしますか？
それを通して、私を歩く？
実際に、マーカスは既に私を与えた。
他の誰かがそれを介して、私を歩く。
我々は何をすべきかときに我々 -
これは非常によく似ています 我々だけで何をしていた。
AVI。
>> 読者：私は推測を取るつもりです。
だから、お菓子を取得するとき。
>> JASONハーシュホーン：うん。
まあ、我々は、カボチャを得た。
私たちの最初のものを取得してみましょう。
私たちは、カボチャを得た。
>> 観客：[OK]をクリックします。
カボチャは、ゼロが返されます。
だから、それに入れて。
または実際に、あなたがそれを置く リンクされたリストの中。
>> JASONハーシュホーン：どのように我々は何 リンクされたリストに入れて？
>> 観客：ああ、実際の構文？
>> JASONハーシュホーン：ただ歩く -
より多くを語る。
私たちは何をしますか？
>> 読者：あなただけの挿入 最初のノードとして。
>> JASONハーシュホーン：わかりました。
だから我々は我々のノード、カボチャを持っている。
そして今、どのようにそれを挿入しますか？
>> 観客：割り当てる ポインタへのそれ。
>> JASONハーシュホーン：ポインタ？
>> 観客：ゼロにポインタ。
>> JASONハーシュホーン：だからここで この点はいますか？
>> 観客：今NULLに。
>> JASONハーシュホーン：まあ、 それがnullを指しています。
しかし、私はかぼちゃに入れている。
だからここでそれが指している必要があります？
>> 観客：カボチャへ。
>> JASONハーシュホーン：カボチャへ。
その通りです。
だから、これはカボチャを指しています。
どここのポインタはない カボチャ点？
へ
>> 観客：ヌル。
>> JASONハーシュホーン：nullに。
その通りです。
だから我々は、単に何かを挿入 リンクされたリストに変換する。
我々だけでこれを行うには、このコードを書いた。
ほとんど我々はほとんどそれを得た 完全に割れた。
今、私たちはお菓子を挿入します。
私たちのキャンディーもゼロになる。
だから我々は、キャンディで何をしますか？
>> 観客：それはどうかに依存します 我々はそれを並べ替えしようとしていない。
>> JASONハーシュホーン：それです。 まったく正しい。
か否かに依存する 我々はそれを並べ替えしようとしている。
のは、我々はわからないとしましょう それをソートするために行く。
>> 観客：それでは、私たちが説明したように 以前は、それだけでそれを置くのが最も簡単です
右ポインタので、先頭に ゼロポイントからキャンディへ。
>> JASONハーシュホーン：わかりました。
少々お待ちください。
私はここお菓子を作ってみましょう。
そのため、このポインター -
>> 観客：ええ、今すべき キャンディーを指している。
その後のポインタを持っている カボチャのお菓子のポイント。
>> JASONハーシュホーン：そのような？
そして、我々は別のものを得たと言う ゼロにマップすることは？
>> 観客：さて、あなただけの 同じことをする？
>> JASONハーシュホーン：同じことを行う。
したがって、このケースでは、ない場合は それは、それを並べ替えておきたい
むしろ簡単に聞こえる。
我々はindice内のポインタを取る 我々のハッシュ関数によって与えられる。
私たちは、新しいノードにそのポイントを持っている。
そして、それが指していたどのような 以前まで -
この場合はNULLを、中 第二ケースカボチャ -
それが指しているものは何でも、その 以前、我々は次のに追加
私たちの新しいノード。
私たちは、何かを挿入している 初めに。
実際にはこれよりもずっと簡単です。 ソートされたリストを維持しようとしています。
しかし、再び、検索はなり もっとここに複雑。
我々は常に末尾に移動する必要があります。
>> [OK]をクリックします。
別々の連鎖についてのご質問？
どのようにそれが動作します？
ここでそれらを依頼してください。
私は実際に確認し、すべてのようにしたい 我々は出掛ける前にこれを理解しています。
>> 観客：なぜあなたは、カボチャを入れない と同じにキャンディー
ハッシュテーブルの一部？
>> JASONハーシュホーン：良い質問。
なぜ我々は同じに入れない ハッシュテーブルの一部？
さて、この場合の当社のハッシュ関数 リターンはそれらの両方のためのゼロ。
そこで、彼らはindiceゼロに行く必要がある 我々はするつもりだところですので、
彼らのために見てみると、我々今までに それらを見てみたい。
再び、リニアプロービング手法に 我々はゼロからそれらの両方を入れないでしょう。
しかし、別々の連鎖アプローチでは、 我々はゼロでそれらの両方を置くつもりだ
そして、ゼロのオフリストを作成します。
>> そして、我々はカボチャを上書きしたくない 単にそのため、我々はだろうから
カボチャであったことを前提とし 挿入されたことはありません。
私達はちょうどで一つのことを続けると 悪いことする場所。
[いいえがあるだろう 今まで私たちの可能性 -
私たちが今まで重複していたなら、私たち ちょうど私たちの初期値を消すだろう。
我々はこのアプローチをなぜだからです。
またはそれは我々が選んだ理由だ - しかし、繰り返しますが、私たち 別々の連鎖的なアプローチを選択しました、
これは多くの他のアプローチがあります 1が選択できます。
それがあなたの質問に答えるのでしょうか？
>> [OK]をクリックします。
カルロス。
リニアプロービングが伴うだろう -
我々はゼロからの衝突を発見した場合、我々は かどうかを確認するために次のスポットになります
それが開いていたし、そこにそれを置く。
そして、我々は次のスポーツで見て、 それが開いていたかどうかを確認し、そこにそれを置く。
だから我々は、次の利用可能なを見つける。 オープンスポットとそこに置く。
その他のご質問は？
AVI、うん。
>> 観客：それのフォローアップとして、 あなたは次のスポットとはどういう意味ですか？
ハッシュテーブル内またはリンクされたリストにある。
>> JASONハーシュホーン：リニア プログラミングなしリンクされたリスト。
ハッシュテーブルの上に次のスポット。
>> 観客：[OK]をクリックします。
だから、ハッシュテーブルは次のようになります。 サイズに初期化 -
文字列の数のように あなたが挿入されたこと？
>> JASONハーシュホーン：あなたでしょう それは本当に大きなことをしたい。
はい。
ここに私たちの写真です ただボードに描きました。
繰り返しますが、私たちはここの衝突を持っている。
152で。
そして、あなたは私たちが作成した表示されます それをオフにリンクされたリスト。
ここでも、ハッシュテーブルの別々の連鎖 アプローチは、1あなたではありません
設定の問題のために取らなければならない 6しかし、一つであることが多く
学生が取る傾向があります。
だから、そのノートに、私たちは簡単に説明しましょう 私たちは、問題6について出掛ける前に、
そして私はあなたと話を共有します。
私たちは、3分している。
>> 問題は、6を設定します。
あなたは、4つの機能を持っている -
負荷、サイズを確認し、アンロードします。
負荷 -
さて、私たちは続けられてきた 過負荷ちょうど今。
我々は、ボード上の負荷を描きました。
そして私たちも、多くのコーディング開始 リンクされたリストに挿入。
だから、負荷がよりもはるかに多くはありません 我々だけで何をしてきた。
>> あなたがしたらチェックがある 何かがロードされた。
それは、これと同じプロセスです。
あなたが投げる同じ第2の部分 ハッシュ関数に何か
し、その値を取得します。
しかし、今我々はそれを挿入していない。
今、我々はそれを探しています。
私は見つけることのために書かれたサンプルコードを持っている リンクされたリストの中で何か。
私はそれを実践することをお勧めします。
しかし、直感的に何かをされている発見 何かを挿入するにはかなり似ています。
確かに、我々は見つけることの絵を描いた リンクされたリストの中で何か、移動
あなたが最後に到着するまでを通して。
そして、あなたが最後になったし、できなかった場合 それを見つける、それはそこではありません。
だから、基本的には、チェックだ。
>> 次のサイズです。
のサイズを飛ばしてみましょう。
最後に、アンロードしています。
アンは、我々が描かれていないものです ボード上のか、まだコード化された。
しかし、私はそれをコーディングしようとすることをお勧めします このサンプルリンクリストの例では。
しかし、直感的にアンロードする 自由に似ています -
または私は意味チェックすることと似ています。
あなたが行っている現在、その都度除い を通して、あなたは単にチェックしていない
あなたがそこにあなたの価値を持っているかどうかを確認します。
しかし、あなたは、そのノードを取っているし、 基本的に、それを解放する。
それはあなたが何を要求し、アンロードものだ。
あなたはmallocさだ無料すべて。
だから、全体のリストを行っている もう一度、全体のハッシュを経由
テーブルを再び。
今回はチェックしません。 そこにあるものを確認します。
ただそこにあるものを解放。
>> そして最後にサイズ。
サイズは、実装する必要があります。
あなたのサイズを実装しない場合 -
私はこのようにそれを言うよ。
あなたは正確にサイズを実装しない場合 を含む1行のコード
文を返し、あなたは 間違ってサイズをしている。
だから、完全な設計のために、必ずサイズを確認 ポイントは、あなたが正確に1でそれをやっている
を含むコード行、 return文。
>> そして、まだAkcharを荷造りしないでください。
イーガービーバー。
私はあなたたちに感謝言いたかった セクションに来るため。
ハッピーハロウィンを持っています。
これは私の衣装です。
私は木曜日に、これを身に着けていることでしょう 私が営業時間でお会いします。
そして、あなたはいくつかの詳細について興味があれば この衣装、感触などのバックグラウンド
2011セクションをチェックアウトして自由 私は理由の物語のための
カボチャの衣装を身に着けている。
そして、それは悲しい物語です。
ですから、持っていることを確認してください 近くのいくつかの組織。
しかし、それでは、いずれかを持っている場合 私は固執よ質問
外側のセクションの後。
幸運は、問題に6を設定します。
そしていつものように、あなたがいずれかを持っている場合 質問、私に知らせてください。