筆記四 線性表 陣列描述

2021-07-11 14:48:02 字數 2763 閱讀 5512

#pragma warning(disable:4996)

#include

#include

#include

using

namespace

std;

typedef

struct mytype;

template

class linearlist

; //析構函式

virtual

bool empty() const = 0; //返回true,當且僅當線性表為空

virtual

int size() const = 0; //返回線性表的元素個數

virtual t& get(int theindex) const = 0; //返回索引為theindex的元素

virtual

int indexof(const t& theelement) const = 0; //返回元素theelement第一次出現時的索引

virtual

void erase(int theindex) = 0; //刪除索引為theindex的元素

virtual

void insert(int theindex, const t& theelement) = 0; //把theelement插入線性表中索引為theindex的位置

virtual

void output(ostream& out) const = 0; //把線性表插入的輸出流out

};template

class arraylist : public linearlist

//adt方法

bool empty() const;

int size() const;

t& get(int theindex) const;

int indexof(const t& theelement) const;

void erase(int theindex);

void insert(int theindex, const t& theelement);

void output(ostream& out) const;

public:

void changelength1d(t*& a, int oldlength, int newlength);

friend ostream& operator

<

void checkindex(int theindex) const;

private:

int listsize; //線性表的元素個數

int arraylength; //一維陣列的容量

t* element; //儲存線性表元素的一維陣列

};template

arraylist::arraylist(int initialcapacity)

template

arraylist::arraylist(const arraylist& thelist)

template

bool arraylist::empty() const

template

int arraylist::size() const

template

t& arraylist::get(int theindex) const

template

int arraylist::indexof(const t& theelement) const

template

void arraylist::erase(int theindex)

template

void arraylist::insert(int theindex, const t& theelement)

//有效索引,判斷陣列是否已滿

if (listsize == arraylength)

copy_backward(element + theindex, element + listsize, element + listsize + 1);

element[theindex] = theelement;

++listsize;

}template

void arraylist::changelength1d(t*& a, int oldlength, int newlength)

t *tmp = new t[newlength];

int number = min(oldlength, newlength); //複製的元素的數量判斷

copy(a, a + number, tmp); //元素複製

a = tmp;

}template

ostream& operator

<

template

void arraylist::output(ostream& out) const

template

void arraylist::checkindex(int theindex) const

}int main(int argc, char * argv)

2、執行:

線性表 陣列描述

ifndef arraylist h define arraylist h include includetemplateclass arraylist templatearraylist arraylist int initcapacity arraylength initcapacity ele...

資料結構(四) 線性表的公式化描述小結

公式化線性表的核心操作 插入 刪除 合併和搜尋 公式化線性表的操作 對陣列的操作 解題時可能用到的技巧 元素逆置 二分搜尋 int型別模擬指標 一點點想象力 時間空間複雜度要求 大部分情況 時間複雜度o n 空間複雜度為o 1 時間複雜度為o logn 的題目較少,且最優解需要耗費時間。除非想不出其...

線性表描述字典

template struct pair template struct pairnode pairnode pairthepair,pair p template class dictionary virtual bool empty const 0 virtual int size const ...