首先談到線性表,我們先接觸到的是模板。
在剛開始程式方面的學習時,我們接觸的題目 資料都是固定的型別,但越到後面,會發現我們接觸的題目有時候輸入資料型別不唯一,可能是int或者double 又或者char等等,這時就需要運用到模板,就可以不用考慮資料型別的問題 編譯器會根據輸入的資料自動生成相應型別的函式,充分解決效率低等問題。
函式模板基本語句
template《模板行參表》
返回值型別 函式名(參數列)
類模板template《模板形參表》
class 類模板名
當然在類中也可使用,我們之後學習到的線性表儲存問題時,就有考慮到資料的型別問題,也可以用模板將引數化。
接下來接觸的就是順序表既線性表的順序儲存結構,這與大一學習的陣列相似,通過陣列下標來訪問資料,這些方面就不多做介紹,需要注意的是,在順序表中插入和刪除操作時,有些資料的下標需要變換,例如插入資料時,先找到相應位置後,將該位置之後的所有資料後移既下標加1。刪除資料時,找到相應位置後,之後的資料全部前移既下標減1。
然後就接觸單鏈表。
單鏈表是用一組任意的儲存單元存放線性表資料,可連續也可以不連續。最大的不同就是,每個單元在儲存資料時,還需要儲存其位址資訊(指標)。包含兩部分(data域和next域)data域用於存放資料,next域用於儲存下乙個後繼結點的位址。在編寫程式時需要先給出單鏈表結點的定義
template
struct node
還需注意的是第乙個結點無前驅,需要設乙個頭指標指向它。訪問結點的data域和next域需要用到->符。
接下來就是差不多的構造。遍歷,刪除等
比較主要的是兩種插入方法。
頭插法將新資料插入在頭指標之後,頭結點之前。具體**實現為:
尾插法將新資料插入在尾結點之後。具體**實現:
node*s,*r;
first=new node;
r=first;
s=new node;
s->data=a[i];
r->next=s;
r=s;
r->next=nullptr;
雙鏈表的知識。
雙鏈表與單鏈表的不同是,雙鏈表還多了乙個前驅指標用於儲存前乙個資料的位址 左右指標分別為llink和rlink 在定義結點時也要多定義乙個llink。雙鏈表的優點是不僅可以找到資料的後繼也可以找到他的前驅。
主要的是插入和刪除操作
插入:(在p之後插入乙個新結點s)
s->llink=p;
s->rlink=p->rlink;
p->rlink-llink=s;
p->rlink=s;
刪除:p->llink->rlink=p->rlink;
p->rlink->llink=p->llink;
delete p;
迴圈鍊錶
這個可以理解為乙個單鏈表,但也有不同。單鏈表的結尾指向的是null。而迴圈鍊錶指向的是鍊錶的頭部,就形成了環結構。在單鏈表中的遍歷是p->next!=null現在是不等於頭節點。 大部分還是和單鏈表一致。
以上是我對線性表這一章的理解和我自己認為重要的知識點。
線性表知識總結
線性表順序儲存結構 const int maxsize n template class seqlist public seqlist seqlist datatype a,int n seqlist int length datatype get int u int locate datatype...
線性表知識小結
一 順序表元素的插入 順序表的插入有兩種儲存方式,一種是順序表的形式,一種是鍊錶的形式。順序表的特點是它的元素按順序存放位址連續的儲存單元裡。想要把元素插入順序表的某乙個單元裡面,首先就要把想要插入的這個元素單元格的後面的所有的元素往後移,往後移的過程是從最後乙個元素開始往後移,接著前面所有需要移的...
線性表的知識總結
1.定義 線性表是乙個具有相同特性的資料元素的有限序列。2.線性表所含元素個數即為線性表長度,3.線性表功能 存放資料 容器 線性表的順序儲存結構 順序表是以陣列的形式儲存的線性表,線性表的順序儲存是指用一組位址連續的儲存單元依次儲存線性表中的各個元素。採用順序儲存結構的線性表通常稱為順序表。順序表...