データ構造の授業のノート1


最初の授業では、c言語の知識を復習し、データ構造という授業を簡単に紹介しました.
 
1、参照および関数呼び出し:
1.1参照:データに対して「参照」を作成します.彼の役割は変数に別名を付けることです.これはC++がC言語に対する重要な補充である.
使い方は簡単です.
int a = 5;
int &b = a;
bはa別名であり、bとaは同じ変数を表し、メモリ内の同じメモリセルを占め、同じアドレスを有する.
注意事項:
  • は、参照を宣言し、初期化する必要があり、どの変数を表すかを宣言します.(関数パラメータとして初期化は不要)
  • は、1つの参照を宣言した後、別の変数の参照として使用できません.

  •      3.参照配列を作成できません.
    1.2関数呼び出し:
    実は関数で引用を理解しました
    void Myswap1(int a,int b)
    {
    	int c = a;
    	a = b;
    	b = c;
    }
    
    void Myswap2(int &a,int &b)
    {
    	int c = a;
    	a = b;
    	b = c;
    }
    
    void Myswap3(int *pa,int *pb)
    {
    	int c = *pa;
    	*pa = *pb;
    	*pb = c;
    }

    この3つの関数は簡単で、最初は値だけが入ってきて、グローバル変数を変えません.3つ目もよく知っていて、住所を伝えて、操作しやすいです.依然として「値伝達」の方式であり、変数のアドレスを伝達しているにすぎない.二つ目はこれらのものを徹底的に変え、関数パラメータとして引用し、伝達された実パラメータは変数であり、数値ではなく、本当の意味での「変数伝達」である.
     
    2、配列とポインタ:
    これは簡単に言えば、基本的な知識です.
    主な内容:
    1、関数伝達配列はポインタを伝達するので、これはみんな知っています.だから、伝達するときはarr[]を書いて、中にいくら書いても、書かなくても、大丈夫です.じゃ、後ろに変数を置いて配列の長さを伝達しなければなりません.
    2、また、定義:int arr[5]では、あなたが境界を越えて訪問しても間違いはありませんが、論理的には道理がないに違いありません.それはtypedef int INTARR[3];境界を越えてアクセスすると、vsでエラーが報告されますので、注意してください.
    3、ポインタと配列名の違いは何ですか?これはもともと2つのもので、みんなは注意していないかもしれません.
    第一:ポインタは自増できるし、配列名はだめだ.定数だからね.
    第二に、アドレスが異なり、名前[n]は、このように使用できますが、配列名アドレスは最初の要素アドレスです.ポインタアドレスはそのポインタのアドレスで、ポインタに保存されているのが最初の要素アドレスです.
    第三:sizeof()は、空間が異なり、配列が配列ほど大きな空間を占めている.ポインタは4バイトです.
    もともと2つのもので、こんなに多くの違いはすべて本質の異なる体現です.
    3、構造体:
    基本的な操作です
    typedef struct Date
    {
    	int Year;
    	int Month;
    	int Day;
    	struct Date *pDate;
    }Date, *pDate;

    1、内部に自分へのポインタがなければ、最初の行は名前をつけないことができません.
    2、内部で自分を定義することができないので、できればその空間は無限ではないでしょうか.簡単な論理
     
    ポインタは慣れていないので、Date*を書いたほうがいいです.
    3、ある学生は注意していません:構造体の中のものを訪問してどのように訪問しますか?
    Date.この形式、あるいはこのノードを指すポインタpがp->という形式で、書き間違えないでください.
     
    4、それから構造体能が直接このように価値を与えることです.
       Date d1 = {2018,9,11};
    私は意外にも知らないで、以前はまだ愚かな1つ1つの賦値です.
     
    5、それから、構造体にどんなメリットがあるか書きたいです.
    これは先生が言ったのではないので、よく書けないかもしれません.
    例えば、学生の成績は、構造体を使わなければ、私たち一人の学生が十数個の情報を持っている可能性があります.変数の定義と操作は煩わしく、データ構造は緩やかな感じがします.プログラムの可読性も移植性もメンテナンス性も向上した構造体で表現したほうがよい.また,関数呼び出しの際には,かなりのパラメータが伝達され,また操作したり戻したりするのは面倒なことである.今では1つの構造体だけが伝わればいいので、操作は極めて簡単です.まとめてみると良い操作で、中で気に入って、有機的に対象の属性を組織しました.関数(エントリパラメータ)の再定義の代わりに、構造体メンバー変数を変更します.
    基本はそうでしょう.
    6、それからそれです:typedef int INTARR[3];これにより、長さ3のデータ型の配列を直接定義し、そのまま使用できます.
    INTARR arr1;
     
    C言語の備蓄知識を思い出し、データ構造の基本概念を話した.
     
    データ構造は非数値計算のプログラム設計問題におけるコンピュータの操作対象と彼らの関係と操作などを研究する学科である.
    データ:客観的な事物に対する記号表示であり、コンピュータに入力されて処理される記号の総称を指す.
    ≪データ要素|Data Elements|oraolap≫:データの基本単位
    データ項目:データの分割不可最小単位
    ≪データ・オブジェクト|Data Objects|oem_src≫:同じ性質のデータ要素の集合.
    例:動物はデータであり、ある動物はデータ要素であり、猫と犬はデータオブジェクトであり、色はデータ項目であってもよい.
     
    データ要素の間に何らかの関係があり、この関係は構造になります.
    4つの基本構造:
    集合:同じ集合を除いて他の関係はありません.
    線形構造せんけいこうぞう:一対一の関係いちたいいちのかんけい
    ツリー構造:一対多の関係
    図形構造:多対多の関係