#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 ...