線性表的順序列表實現

2021-07-07 10:15:17 字數 2431 閱讀 6416

教材: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 ...