順序表,陣列就是典型的順序表,順序表便於查詢元素,單移動、刪除時間開銷比較大,好了廢話少說,直接上**,對照原始碼看吧
#ifndef seqlist_h
#define seqlist_h
#include #include using std::cin;
using std::cout;
using std::cerr;
using std::endl;
using std::ostream;
using std::istream;
const int defaultsize = 100;
const int initlen = 20;
template class seqlist
int length() const//返回順序表內已有資料的長度
int maxsize() const//返回順序表的最大容量
bool isempty()//返回順序表是否為空
bool isfull()//返回順序表是否已滿
int search(t &x) const;//查詢x是否在順序表中存在,存在返回其位置,不存在返回0
t& getdata(int i) const//返回第i個編號位置的元素
} void setdata(int i, t &x)//對第i個編號位置的元素賦值
} bool insert(int i, t &x);//在第i個編號位置插入元素
bool remove(int i, t &x);//把第i個編號位置的元素移走
void resize(int newsize);//調整順序表的大小,關鍵是要把原來的資料複製過來
seqlist& operator= (const seqlist&rhs);
void init();//這個方法無實際意義,純粹是為了測試用單獨引入的1個方法
friend ostream& operator << (ostream& os,const seqlist& seqlist)
return os;
}private:
t *data;//存放的陣列
int size;//最大可存放的項
int last;//當前尾巴元素的小標
};template seqlist::seqlist(int maxsize) }}
template seqlist::seqlist(const seqlist& seqlist)
for (int i = 1; i <= last+1; i++)
}template int seqlist::search(t &x) const
} return 0;
}template bool seqlist::insert(int i, t &x)
if( i < 0 || i > last + 1)//注意我們講的是順序表
for(int j = last; j >= i-1; j--)
this->data[i-1] = x;//插入
last++;//現有尾巴下標後移
return true;
}template bool seqlist::remove(int i, t &x)
if(i < 1 || i >= last+1)
x = this->data[i-1];
for(int j = i; j <= last; j++)//後面的元素向前移
last--;
return true;
}template void seqlist::resize(int newsize)
if(newsize != size)
else //新的容量比原來小
t* newarray = new t[newsize];
if( newarray == null)
t* srcptr = data;
t* descptr = newarray;
for(int i = 0; i <= end; i++)
delete data;//刪除原來的陣列
data = newarray;//data指向新的陣列
last = end;//重新記錄尾巴元素的下標
size = newsize;//重新新的容量 }}
template seqlist& seqlist::operator= (const seqlist&rhs)
data = new t[size];
if (data == null)
for (int i = 1; i <= last+1; i++)
return *this;
}template void seqlist::init()
}#endif
基本資料結構 鍊錶
鍊錶 鍊錶與陣列的區別是鍊錶中的元素順序是有各物件中的指標決定的,相鄰元素之間在物理記憶體上不一定相鄰。採用鍊錶可以靈活地表示動態集合。鍊錶有單鏈表和雙鏈表及迴圈鍊錶。書中著重介紹了雙鏈表的概念及操作,雙鏈表l的每乙個元素是乙個物件,每個物件包含乙個關鍵字和兩個指標 next和prev。鍊錶的操作包...
基本資料結構 鍊錶
談到鍊錶之前,先說一下線性表。線性表是最基本 最簡單 也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表有兩種儲存方式,一種是順序儲存結構,另一種是鏈式儲存結構。順序儲存結構就是兩個相鄰的元素在記憶體中也是相鄰的...
基本資料結構(2) 鍊錶
鍊錶開發於1955 56,由當時所屬於蘭德公司 英語 rand corporation 的艾倫紐維爾 allen newell 克里夫肖 cliff shaw 和赫伯特西蒙 herbert simon 在他們編寫的資訊處理語言 ipl 中做為原始資料型別所編寫。ipl被作者們用來開發幾種早期的人工智...