線性表基礎(三)

2021-09-29 02:27:07 字數 1819 閱讀 9733

迴圈鍊錶

特點:首尾相接的鍊錶。

可以從任一節點出發,訪問鍊錶中的所有節點。

判斷迴圈鍊錶中尾結點的特點:

q->next==first

template

struct node

;template

class cyclelinklist;

空表的構造

template

cyclelinklist:: cyclelinklist( )

尾插法構造迴圈鍊錶

template

cyclelinklist:: cyclelinklist(t a[ ], int n)

r->next=first;    //單鏈表建立完畢,將終端結點的指標域指向頭結點

}頭插法構造迴圈鍊錶

template

cyclelinklist:: cyclelinklist(t a[ ], int n,int k)

}雙鏈表

特點:由於在雙向鍊錶中既有前向鏈又有後向鏈,尋找任乙個結點的直接前驅結點與直接後繼結點變得非常方便。設指標p指向雙鏈表中某一結點,則有下式成立: 

p->llink->rlink = p = p->rlink->llink

雙向鍊錶p之後插人節點(p存在後繼結點)

q->rlink=p->rlink;

p->rlink=q;

q->llink=p;

q->rlink->llink=q;

在空表中插入乙個結點(在表尾插入乙個結點)

q->rlink=p->rlink;

p->rlink=q;

q->llink=p;

if(q->rlink)

q->rlink->llink=q;

刪除

p->llink->rlink=p->rlink;

p->rlink->llink=p->rlink;

delete(p);

刪除表尾結點

p->llink->rlink=p->rlink;

if(p->rlink)

p->rlink->llink=p->rlink;

delete(p);

雙向鍊錶的實現

template

class doublelink ;

template

doublelink ::doublelink()

template

node*s;

s=new node;

s->data=data;

s->rlink=head->rlink;

head->rlink=s;

s->llink=head;

if (s->rlink)

s->rlink->llink=s;

return;

}template

void doublelink::display()

cout}template

doublelink::~doublelink()

}靜態鍊錶

優點:插入和刪除時不需要移動元素,直接修改指標即可,因此效率較高

缺點:靜態鍊錶是借助於陣列實現的,因此,不能動態的修改陣列的大小,存在著跟靜態陣列一樣不能按需進行儲存空間的分配

線性表基礎

一元多項式的表示 由於每個非零項由設計兩個資訊 係數和指數 1.用結構體陣列表示 2.鍊錶儲存 每個節點中存放係數和指數 定義 由同型別資料元素構成有序序列的線性結構 1.表中元素個數為線性表的長度 2.線性表沒有元素時為空表 3.表起始位置為表頭,表結束位置為表尾 線性表的順序儲存又稱為順序表。它...

線性表(三) 鍊錶

鍊錶是由一系列稱為表的結點的物件組成的。它可以動態分配儲存空間,解決了陣列的靜態分配儲存空間的一些弊端。在一些應用中,常採用動態分配靜態化的思想為鍊錶分配儲存空間,這種技術稱為 儲存池 常見的鍊錶型別有 單鏈表 雙鏈表 迴圈鍊錶,本文將對三者做詳細介紹。實現乙個鍊錶首先需要定義鍊錶的 零件 link...

線性表基礎(二)

單鏈表 通過指標把它的一串儲存結點鏈結成乙個鏈 儲存結點由兩部分組成 data欄位 link欄位 template struct node 單鏈表的實現 template class linklist linklist t a int n linklist int length t get int ...