データ構造研究ノート1.1-線形テーブルの概念
前に書く
これは研究ノートであり、徐々に理解するプロセスです。
それが永遠に続くことを願っています。
目次
まず、線形テーブルの概念と定義、そしてもちろんC ++の抽象基本クラスを理解しましょう。特定の実装は次のセクションに残されています。
概念
- 線形テーブルは有限シーケンスです。つまり、線形テーブルには最初のエントリと最後のエントリのみがあり、他のエントリには直接の先行が1つだけあります(最初のエントリには先行がありません)。ただし、エントリを除いて最後のエントリは除きます。 、他のエントリには、直後の後続iが1つだけあります(最後のエントリには後続がありません)。
- L =(a1、a2、…、an)、Lはテーブルの名前、nはテーブルの長さです。
- 最初のエントリはヘッダーと呼ばれ、最後のエントリはテールと呼ばれます。
- 隣接関係は1対1であり、すべてのノードは1対1の隣接関係に基づいて線形構造を形成します。
- 線形テーブルの各要素が異なるデータ型を持つことは概念的に許可されていますが、現在の学習プロセスでは同じデータ型のみが考慮されます。
いくつかの例
線形テーブルのいくつかの例:
COLOR =( 'Red'、Orange '、' Yellow '、' Green '、' Blue '、' Black ')
DEPT =(通信、コンピューター、自動化、マイクロエレクトロニクス、建築および都市計画、ライフ科学、精密機器)
スコア=(667、664、659、659、657、654、653、652、651、650、650)
線形テーブルの値とその位置の間には、関係がある場合とない場合があります。順序付き線形テーブルの要素は値の昇順で配置されますが、順序なし線形テーブルにはそのような関係はありません。
線形テーブルの抽象データ型
// 线性表的抽象数据类型
ADT LinearList is
Objects: n(≥0)个原子表项的一个有限序列。
Function:
create() 创建一个空线性表
int Length() 计算表长度
int search(T& x) 找x在表中的位置,返回表项位置
int Locate(int i) 返回第i个表项在表中的位置
bool getData(int i,T& x) 取第i个表项的值
bool setData(int i,T& x) 用x修改第i个表项的值
bool Insert(int i,T& x) 在第i个表项后插入x
bool Remove(int i,T&x ) 删除表中第i个表项,通过x返回删除表项的值
bool IsEmpty() 判断表是否为空
bool IsFull() 判断表是否已满
void Sort() 对当前表排序
end LinearList
上記の計算は論理レベルでの定義にすぎず、「何をすべきか」のみが示されています。収納構造が決まれば、「やり方」などの詳細がわかります。
参考文献:「データ構造」(オブジェクト指向メソッドとC ++言語で記述)(第2版)。清華大学出版局。YinRenkun