個人財務 Cプログラミングでリンクリストを作成する方法 - Cプログラミングでダミー

Cプログラミングでリンクリストを作成する方法 - Cプログラミングでダミー

ビデオ: 【Python】英単語テストを自動で作るプログラム!! 2024

ビデオ: 【Python】英単語テストを自動で作るプログラム!! 2024
Anonim

Cプログラミングで、すでに作成したコードに2番目の構造を追加する場合は、相互にポインタを含む一連の構造体を作成します。構造体の基本データに加えて、構造体には、リスト内の次の構造体のアドレスを含むポインタが含まれています。

ポインタ名のいくつかの巧妙なジャグリングと、リストの最後を覆うためのNULLを加えれば、Aプリミティブリンクリストの例のソースコードに似たものになるかもしれません。

<! #include #include #include int main(){構造体{char symbol [5];} int量;浮動価格;構造体ストック* next;};構造体在庫*最初に;構造体在庫*現在;構造体在庫*新規; / *メモリ内の構造体を作成する* / first =(struct stock * *)malloc(sizeof(struct stock)); if(first == NULL){puts( "ある種のmalloc()エラー"); exit(1);} / *構造体データの割り当て* / current = first; strcpy(current-> symbol、 "GOOG"); current-> quantity = 100;現在の価格= 801。 19; current-> next = NULL; new =(struct stock *)malloc(sizeof(struct stock)); if(new == NULL){puts( "別のmalloc()エラー"); exit(1);} current-> next = new;現在の=新しい; strcpy(現在のシンボル、 "MSFT"); current-> quantity = 100;現在の価格= 28。 77; current-> next = NULL; / *データベースを表示する* / puts( "投資ポートフォリオ"); printf( "SymboltSharestPricetValuen");現在の=最初;現行 - >数量、現在 - >価格、現在 - >数量*現在 - >価格); current = current-> next;現行 - >数量、現在 - >価格、現在 - >数量*現在 - >価格); return(0);}

このソースコードはかなり長いですが、最初の構造にリンクされた2番目の構造を作成するだけです。ソースコードの長さがあなたを脅かさないようにしてください。

<! - 2 - >

13行目から15行目では、リンクリストのダンスに必要な標準の3つの構造ポインタが宣言されています。伝統的に、彼らは最初、現在、そして新しい名前が付けられています。構造体の4番目のメンバに挿入され、次に構造体ポインタである11行目に配置されます。

typedefを使用して、リンクリストを作成するときに新しい構造変数を定義しないでください。 Primitive Linked-Listの例ではtypedefを使用していないので、コードに問題はありませんが、多くのCプログラマーは構造体でtypedefを使用しています。注意してください!

<! - 3 - >

Line 15で使用されているnewという変数名はC ++の予約語なので、バイリンガルにするには変数名をnew_structまたはnew以外の変数に変更します。

最初の構造体が塗りつぶされると、行30はNULLポインタを次の要素に代入します。そのNULL値はリンクされたリストの終わりを覆います。

32行目は構造体を作成し、そのアドレスを新しいポインタ変数に配置します。アドレスは、38行目の最初の構造体に保存されます。これは、2番目の構造体の位置が保持される方法です。

40行目から43行目は、2行目のポインタの情報を埋め、行43の次の要素にNULL値を代入します。

リンクは構造体の内容が表示されるときに行われます。 48行目は最初の構造体のアドレスを取得します。次に、ライン54は、第1の構造内から次の構造のアドレスを取り込む。

演習1

プリミティブリンクリストの例からエディタにソースコードを入力します。それは長いですが、後でもう一度編集する必要があるので入力してください(これまで慣れていない場合)。ビルドして実行します。 配列とは異なり、リンクリストの構造体には番号が付けられません。代わりに、各構造はリストの次の構造にリンクされます。最初の構造体のアドレスを知っている限り、NULLでマークされている最後までリストを処理できます。 プリミティブ・リンク・リストの例は、繰り返しコードがたくさんあるちょっとしたソースコードを示しています。あなたのコードでこのような複数のステートメントが表示されたら、すぐに "関数"と考えるべきです。 "

より良いリンクリストの例

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include# int量;浮動価格;構造体ストック* next;};構造体在庫*最初に;構造体在庫*現在;構造体在庫*新規;構造体ストック* make_structure(void); void fill_structure(構造体のストック* a、int c); void show_structure(struct stock * struct); int main(){int x; / *データベースを表示する* / puts( "投資ポートフォリオ"); printf( "SymboltSharestPricetValuen(" SymboltSharestPricetValuen構造体ストック*構造体*構造体* a; a =(構造体のストック*構造体* ); void fill_structure(struct stock *); void fill_structure(struct malloc(););} void fill_structure(構造体在庫) printf( "Item Symbol:"); scanf( "%s"、a-> symbol); printf( "Number(%s、a - > symbol) ); showf( "%d"、&a-> quantity); printf( "株価:"); scanf( "%f"、&a-> price);} void show_structure(struct stock *

最も関連性の高いリスト( symbol、a-> quantity、a-> price、a-> quantity * a-> price)重要な点は、13行目から15行目までの3つの構造変数を使用することです:

最初に常にアドレスを含むリストの最初の構造体の常に。

currentには、作業中の構造体のアドレス、データの埋め込み、または表示された構造体のアドレスが含まれます。

  • newは、malloc()関数を使用して作成された新しい構造体のアドレスです。

  • 7行目は、株式構造をグローバルとして宣言します。これにより、さまざまな機能からアクセスできます。

  • 行25と行39の間のforループは、それらを結ぶ新しい構造を作成します。初期構造は特別なので、そのアドレスは30行目に保存されます。それ以外の場合は、make_structure()関数のおかげで新しい構造体が割り当てられます。行35では、前の構造が更新されます。現在の値は36行目まで変更されません。その前に、現在の構造体のポインタが次の構造体newのアドレスで更新されます。行40では、最後の構造体の新しいポインタをNULLにリセットすることによって、リンクされたリストの終わりがマークされます。

46行目のwhileループは、リンクされたリスト内のすべての構造体を表示します。ループの条件は、現在のポインタの値です。 NULLが検出されると、ループは停止します。

より良いリンクリストの例に示されているコードの残りの部分は、わかりやすい関数で構成されています。

演習2

より良いリンクリストの例のコードをエディタにコピーします。ビルドして実行します。

fill_structure()関数内のscanf()ステートメントに注意してください。 - >はポインタの "peeker"表記であることに注意してください。アドレスを取得するには、変数にscanf()関数の&の接頭辞を付ける必要があります。

Cプログラミングでリンクリストを作成する方法 - Cプログラミングでダミー

エディタの選択

自転車の点検チェックリスト - ダミー

自転車の点検チェックリスト - ダミー

すぐに自転車の点検をするために数分。あなたの自転車を一時的に与えることは、あなたの次の乗り心地の安全性、快適性、そして楽しさを高めることができます。乗車準備の一環として、次の手順に従ってください:車輪のクイックリリースレバーを開閉して、確認します。

必須サイクリング用具 - ダミー

必須サイクリング用具 - ダミー

あなたはバイクの乗り心地をさらに楽しくするために何百万ものものを買うことができます。自転車用に必要なアクセサリーをいくつかご紹介します。ヘルメット:ヘルメットを着用することはオーストラリアとニュージーランドの法律です。

自転車の範囲を閲覧可能 - ダミー

自転車の範囲を閲覧可能 - ダミー

あなたはサイクリングをすることに決めましたが、その重要なキットを欠いている - バイク!あなたが望む自転車のタイプを正確に知っていない限り、良いアドバイスは、あなたの時間を費やして、自転車で何をするのか、どこに乗るのかを本当に考えてみることです。

エディタの選択

アプリとプライバシー - ダミーを特定する

アプリとプライバシー - ダミーを特定する

Spotifyアプリケーションに登録すると、あなたの個人的な詳細の一部にアクセスする。たとえば、Top10アプリを使用してプレイリストを公開するには、既存のFacebookアカウントにリンクする必要があります。このプロセス中、Facebookはあなたに特定の種類の共有を許可するかどうか尋ねます。

モバイル対応携帯電話を識別する - ダミー

モバイル対応携帯電話を識別する - ダミー

SpotifyモバイルはiPhoneで最も人気がありますが、優れたAndroidバージョン(basks Androidマーケットの5つ星評価のうち5つの評価では5位に入っています)が急速に追いついています。

特集 - ダミー

特集 - ダミー

スポットメイキングは、モバイルでも、あらゆる音楽への普遍的な即時アクセスを可能にしますデバイスまたはデスクトップコンピュータ。 Facebookは人々が古い友達と再会して新しい友達を作るのを助け、Spotifyの助けを借りて青春の歌を再発見し、友人や検索を通じて新鮮な音楽を発見しました。

エディタの選択

IOSアプリケーションでオブジェクト指向設計を使用する方法 - ダミー

IOSアプリケーションでオブジェクト指向設計を使用する方法 - ダミー

IOSは、動作がオブジェクトに関連付けられているプログラムを設計するさまざまな方法です。説明するために、紅茶とスープの作り方を検討することを検討してください。しかし、即座に代わりに活動に飛び込んではいけません。探偵が犯罪現場に入るように行動してください。

IOSアプリケーションでハイレベル抽象化を使用してビデオを再生する方法 - ダミー

IOSアプリケーションでハイレベル抽象化を使用してビデオを再生する方法 - ダミー

このセクションでは、MPMoviePlayerViewControllerクラスの高レベル抽象化を使用してiOSアプリケーションでビデオを再生する方法を説明します。 - (IBAction)playVideo:(id)sender {MPMoviePlayerViewController * moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL];このコードは、ビデオビューコントローラ内のTTTVideoViewControllerファイルからです。 [self presentMoviePlayerViewControllerAnimated:moviePlayer];}シンプルさ自体!必要なのはURLです。

IOSアプリケーションでJavaスクリプトオブジェクト表記を使用する方法 - ダミー

IOSアプリケーションでJavaスクリプトオブジェクト表記を使用する方法 - ダミー

JavaScript Object Notation (JSON)はiOSアプリのデータを表現する上で事実上の標準になっています。 JSONを使用して、Web上でデータを転送したり、長期保存データを保存および取得するためのフォーマットとして使用することができます。 JSONは、人間が読める形式であり、マシンが理解しやすい形式です。 JSONのデータは1つにまとめることができます...