[データ構造]データ設計と実装
✨𝐃𝐚𝐭𝐚 𝐃𝐞𝐬𝐢𝐠𝐧 𝐚𝐧𝐝 𝐈𝐦𝐩𝐥𝐞𝐦𝐞𝐧𝐭𝐚𝐭𝐢𝐨𝐧✨
ははは、、、いつ授業が始まりましたか.😥 入学記念の授業で、私は真剣に勉強の資料の構造内容を整理して、、~~~新入生でしょう.実は毎週クイズを見ていると言われているので毎週つらいです~😫
カリキュラムの内容を整理する略図については面白くありませんが、統一感を与えるために教材を決めました.😟 第1章は整理したくないので、通過します.あ、ハハハ
本章では,資料構造の全体的な説明と資料構造における配列を学習した.
💡 Data
📌 データとは?
データは名詞です.
▶データ抽象化とデータパッケージ
💡 Data Encapsulation
アプリケーションと論理レベルでデータを考える
📌 パッケージC++データ型int
int型は、64ビットの論理レベルで実行プロセスを理解する必要があることを示しますが、アプリケーションレベルで使用する場合は、実行プロセスを理解する必要はありません.
💡 Abstract Data Type (ADT)
私が作成した資料構造は、実際に使用している人が実施過程を理解せずに簡単な説明だけを使用できるようにする資料型です!
📌 アプリケーションレベルと実装レベルのコミュニケーションに必要なADT
では、データ構造は何ですか.
💡 Data Structure
📌 資料構造とは何ですか.
これは
新しいオブジェクトの作成時演算子
データ構造のデータ値を変更する演算子
📒 Abstraction and Built-in Types
抽象資料型はintやfloatなどの機械言語級演算子の簡単な内蔵資料型があり,プログラミング言語が提供する複合資料型もある.
📌 Composite Data Type
例えば、int a;float b; すなわち、変数ABの名義で各データにアクセスすることができる.
Componentosite資料の種類は2種類に分けられます.
C++のBuilt-InとComposite🔽下図🔽と表示できます.
💡 異なるレベルのRecordsについて
📗 Records at the Logical Level
RecordはC++の構造体またはクラスと同義である.
ビットのようなレコードでは、各メンバーは、異なるデータ型を有するデータセットから構成される.
struct CarType
{
int year;
char maker[10];
float price;
};
CarType thisCar; //Cartype형 변수
CarType myCar;
前述したように、メンバー選択オペレータ(period)は、構造体のメンバーにアクセスするために使用されます.演算子を使用します.各変数(オブジェクト)のメンバーには、myCar.year
またはthisCar.maker[4]
のようにアクセスできます.📌 構造体タイプ変数の演算子
CarType thisCar;
CarType myCar;
thisCar = myCar;
(pass-by-valueまたはpass-by-reference)
void f(CarType a) //void f(CarType &a)
{
.
.
.
}
f(thisCar);
📒 Records at the Application Level
アプリケーション・レベルでは、レコードはオブジェクトを意味します.
📕 Records at the Implementation Level
これまで使用してきたデータ構造は、アプリケーション・レベルで使用されています.では、これらのRecordsがどのように実装されているのか、すなわちメモリにどのように割り当てられているのかを考慮する必要があります.
レコードに第1の要素を格納する位置
各レコードメンバーに必要な場所
メンバー変数メモリ位置year 0 maker 4 price 14
int型変数は年4 Byte,後のchar型変数makerは1 Byte,大きさ10の配列で合計10 byte,float型変数が続く.
Baseaddressが8000の場合、各メンバー変数のメモリ割り当て位置は8000、8004、8014です.
💡 異なるレベルの1 Dアレイについて
📗 One-Dimensional Array at the Logical Level
1次元配列は同じ資料型の集合であり,限られた固定サイズ(コンパイル時に知るべき)の資料構造である.
📚 配列に代入演算子は存在しません.
int a[4]];
b = a;
..
したがって、配列自体は返されません.配列変数が返される場合は、開始アドレスが返される場合です.
📚 配列はコンパイル時に決定されます
int a = 4;
int b[a];
配列はコンパイル時に決定する必要があるため、配列が大きいと判断した場合に変数を含めることはできません.値の作成、保存、検索
void f(int array[])
//void f(int *array)로 표현할 수 있음.
{
.
.
.
}
📒 One-Dimensional Array at the Application Level
アプリケーション・レベルでは、最初の配列がデータ内の要素のリストとして格納されます.
配列例
📕 One-Dimensional Array at the Implementation Level
絵を見て理解して~
ひっくり返すぞハハ
.
.
.
アレイには、1 Dアレイではなく、2 D、3 Dなどの多次元アレイも存在します.演算は1次元配列と同じです.2 Dの場合、row、columnインデックス値があります.
これは画像を見ても分かりやすいです.😆 教授はこの机の絵が心の中にあると言って、、、本当に“心”という言叶が好きなようで、^
の2次元配列では、まず行のメモリ位置を保存し、次に列の行に移動し、メモリ位置を順次保存します.
(ほとんどの言語はrow-order方式で格納されています.)
上の内容を画像にまとめる.🔽下🔽に等しい
行と列が定義されているため、実際の実行時にすぐに計算できます.
Reference
この問題について([データ構造]データ設計と実装), 我々は、より多くの情報をここで見つけました https://velog.io/@mmindoong/자료구조-Data-Design-and-Implementationテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol