迴圈鍊錶
特點:首尾相接的鍊錶。
可以從任一節點出發,訪問鍊錶中的所有節點。
判斷迴圈鍊錶中尾結點的特點:
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 ...