之前在學習c語言的時候用c語言實現了動態線性表。現在再使用c++實現一下動態線性表。
相關資料結構方面就不多說了。在之前的部落格裡也有。下面就直接來實現吧。
這裡使用指標來遍歷陣列,這樣在算size,capacity的時候,直接用指標相減的方式就可以得到元素個數,以及容量。
vector.h
#include
#include
#include
#include
//用typedef定義int為儲存型別,想更改直接更改這一句即可。
typedef int datatype;
class vector
//拷貝構造
vector(const vector& v)
//賦值運算子的過載
vector& operator=(vector v);
//析構函式
~vector()
//順序表的有效長度
程式設計客棧 size_t size() const
//順序表的容量
size_t capacity() const
//擴容順序表
void expand(size_t n);
//尾插
void pushback(datatype x);
//擷取容量
void reserve(size_t n);
//尾刪
void popback();
//任意位置插入
void insert(size_t pos, datatype x);
程式設計客棧 //任意位置刪除
void erase(size_t pos);
//查詢元素
size_t find(datatype x);
//列印當前順序表
void print();
private:
//指向第乙個元素的指標
datatype* _first;
//指向最後乙個有效元素的下乙個位置
datatype* _finish;
//順序表容量的下乙個位置
datatype* _endofstorage;
};vector.cpp
#include"vector_list1.h"
//賦值運算子的過載可以使用傳值的方式進行
//在傳值的時候預設呼叫了拷貝建構函式,進行了深拷貝
//而當前這個傳入的v就是我們想要的賦值之後的結果
//將當前的順序表與順序表v一交換,就可以不用再自己實現深拷貝
vector& vector::operator=(vector v)
void vector::expand(size_t n)
void vector::pushback(datatype x)
void vector::popback()
void vector::insert(size_t pos, datatype x)
void vector::erase(size_t pos)
else if(n>capacity())
else
return;
}
void vector::print()
printf("\n");
}int main()
本文標題: c++實現動態線性表
本文位址:
C 實現順序表(線性表)
基本思想是使用陣列作為盛放元素的容器,陣列一開始的大小要實現確定,並使用乙個pointer指向順序表中最後的元素。順序表中的元素是陣列中元素的子集。順序表在記憶體中是連續的,優勢是查詢,弱勢是插入元素和刪除元素。為避免裝箱拆箱,這裡使用泛型,代替object。使用object的例子可以參照這個鏈結中...
C 簡易線性表實現。
哦,看了siki的資料結構教程,自己嘗試實現了一下。介面類如下,主要就實現了這幾個,using system namespace dsl gets the index of the element by.the element by index.index.t getelementbyindex i...
C 線性表的實現
1 線性表的實現,main函式裡是所有函式的測試!有興趣的可以參考!高手請指正 23 include 4 include 5 include 6 using namespace std 78 const int defaultsize 100 9 10 template 11class seqlis...