教材:data structures and algorithm analysis in c++(third edition)
線性表:線性表是由element組成的有限且有序的序列,有序指的是每乙個元素都有自己的位置,並非指按其值大小排序。而按照元素其值與元素位置的關係可以分為有序線性表(sorted list)和無序線性表(unsorted list)
位置:0~n-1
根據線性表的基本操作定義物件的抽象資料型別(adt).定義抽象類list
templateclass list;
list(const list&){};
public:
list(){}
virtual ~list(){}
virtual
void clear() = 0;
virtual
void insert(const e& item)= 0;
virtual
virtual e remove()= 0;
virtual
void movetostart() = 0;
virtual
void movetoend() = 0;
virtual
void prev() = 0;
virtual
void next()= 0;
virtual
int length() const = 0;
virtual
int currpos()const = 0;
virtual
void movetopos(int pos) = 0;
virtual
const e& getvalue() const = 0;
};
adt中包含的關鍵設計是對當前位置(current position)的支援,如成員函式next和prev分別把當前位置移到下乙個元素或者前乙個元素。其含義是線性表的任何實現都支援當前位置這個概念。
定義順序表實現類alist,該類必須實現list中所有的抽象函式
template
class alist : public list
~alist()
void clear()
//插入
void insert(const e& it)
//表尾插入
//assert(listsizelistarray[listsize] = it;
listsize++;
}//刪除表
e remove()
//重置當前位置
void movetostart()
void movetoend()
//向前移動
void prev()
//向後移動
void next()
//返回表長
int length() const
//返回當期位置
int currpos() const
//移動當前位置到pos
void movetopos(int pos)
//返回當前元素
const e& getvalue() const
//倒置順序表(後加的)
void inverse()
}};
測試函式:
int main()
std::cout << "l1的當前位置:"
<< curpos << std::endl;
l2.movetostart();
l2.insert(39);
l2.next();
l2.insert(12);
curpos = l2.currpos();
for (l2.movetostart(); l2.currpos() < l2.length(); l2.next())
std::cout << "l2的當前柵欄:"
<< curpos << std::endl;
//在建構函式中將maxsize修改為20
; alistl3;
l3.movetostart();
l3.next();
l3.insert(23);
for (l3.movetostart(); l3.currpos() < l3.length(); l3.next())
std::cout << "l3的當前位置:"
<< curpos << std::endl;
l3.inverse();
std::cout << "l3逆序後為:"
<< std::endl;
for (l3.movetostart(); l3.currpos() < l3.length(); l3.next())
}
線性表的順尋儲存
此表很好建立,而且進行查詢,刪除,插入都容易理解,但是有乙個缺點 刪除和插入需要調動好些元素 線性表的順序實現 include include define maxsize 15 struct sqlist 線性表的初始化 void init sq sqlist l 線性表的建立 void buil...
演算法序列 線性表
線性表 由零個或多個資料元素組成的有限序列。1 屬於乙個序列 2 第乙個元素沒有前驅,最後乙個沒有後繼 3 有限的。兩種物理儲存結構 1 順序儲存 2 鏈式儲存。順序儲存 1 儲存位置就是順序的位置 2 陣列的最大長度 3 當前長度 length 鏈式儲存 1 使用任意儲存單元儲存資料元素 2 除了...
線性表實現
僅由乙個結構體組成,定義及實現如下所示 struct order list typedef struct order list list 指向該結構體的指標 初始化 list initial 查詢元素x的下標 intfind list l,elementtype x 在位置p前插入元素x bool ...