線性表是具有相同特性的資料元素的乙個有限序列,該序列中所含元素的個數叫做線性表的長度,用n表示,n>=0。當n=0時,表示線性表是乙個空表,即表中不包括任何元素。第乙個元素叫表頭元素,最後乙個元素叫表尾元素。線性表、包括順序表和煉表線性表:零個或多個資料元素的有限序列。
順序表(其實就是陣列)裡面元素的位址是連續的,
鍊錶裡面節點的位址不是連續的,是通過指標連起來的。
adt 線性表(list)順序表,一般使用陣列實現,事實上就是在記憶體中找個初始位址,然後通過佔位的形式,把一定連續的記憶體空間給佔了,然後把相同資料型別的資料元素依次放在這塊空地中,陣列大小有兩種方式指定,一是靜態分配,二是動態擴充套件。data
線性表的資料物件集合為,每個元素的型別均為datatype。其中,除了第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的關係是一對一的關係。
operation
順序表相關的操作跟陣列有關,一般都是移動陣列元素。
//無引數構造方法
seqlist(datatype a,int n); //有引數構造方法
~seqlist(){} //析構函式
int length() //線性表長度
datatype get(int i); //按位查詢
int locate(datatype x); //按值查詢
void insert(int i,datatype x); //插入
datatype delete(int i); //刪除
void printlist(); //遍歷
private:
datatype data[maxsize]; //順序表使用陣列實現
int length; //儲存順序表的長度
};template seqlist::seqlist(datatype a,int n)
template int seqlist::locate(datatype x)
template datatype seqlist::delete(int i)
;templateclass linklist
;templatelinklist::linklist()
templatelinklist::linklist(datatype a, int n)
}templatelinklist::~linklist()
}templateint linklist::length()
return count;
}templatedatatype linklist::get(int i)
if (p == null) throw "location";
else return p->data;
}templateint linklist::locate(datatype x)
return 0;
}templatevoid linklist::insert(int i, datatype x)
if (p == null) throw "location";
else
}templatedatatype linklist::delete(int i)
if (p == null || p->next == null) throw "location";
else
}templatevoid linklist::printlist()
}int main()
優點:
缺點:參考文章
資料結構筆記 線性表
思考 怎麼程式設計解決多項式相加問題?1.線性表概念 由同型別資料元素構成的有序序列的線性結構 1.表中元素個數稱為線性表的長度 2.線性表中沒有元素時稱為空表 3.表的起始位置稱為表頭,結束位置稱為表尾。2.線性表的adt描述 3.線性表的順序儲存實現 未測試 include using name...
資料結構筆記 線性表
資料元素的資料型別。struct seqlist seqlist sl create int maxlen void sl free seqlist slist 釋放 刪除 順序表。與sqlst create 配對。void sl makeempty seqlist slist 置為空表。intsl...
資料結構 筆記 線性表
定義 由同型別資料元素構成有序序列的線性結構 型別名稱 list 物件集 n n 0 個元素構成的有序序列 操作集 list makeempty 初始化乙個空線性表l elementtype findkth int k,list l 根據位序k,返回相應元素 int find elementtype...