單鏈表:
通過指標把它的一串儲存結點鏈結成乙個鏈
儲存結點由兩部分組成: data欄位 link欄位
template
struct node
;單鏈表的實現
template
class linklist
linklist ( t a[ ], int n ) ;
~linklist ( ) ;
int length ( ) ;
t get ( int i ) ;
int locate ( t x ) ;
void insert ( int i, t x ) ;
t delete ( int i ) ;
void printlist ( ) ;
private:
node*first; // 單鏈表的頭指標 , 可以省略
};帶頭結點的單鏈表
頭插法:
template
linklist:: linklist(t a[ ], int n)
}尾插法:
template
linklist:: linklist(t a[ ], int n)
r->next=null; //單鏈表建立完畢,將終端結點的指標域置空
}遍歷:
template
linklist:: printlist()
}不帶頭結點
頭插法:}
尾插法:
node*r;
head=null;
if(n<=0)return;
s=new node;
s->data=a[0];
s->next=head;
head=s;
r=head;
for(int i=1;is=new node;
s->data=a[i];
r->next=s;
r=s;
}按值查詢
查詢演算法:
1 工作指標p初始化,計數器初始化
2 執行下列操作,直到p為空或指向第i個節點
2.1 工作指標後移
2.2 計數器增1
3若p為空,則第i個元素不存在,丟擲位置異常;否則查詢成功,返回節點p的資料元素
template
t linklist::get(int i)
if (!p) throw "位置";
else return p->data;
}插入
1 工作指標p初始化,計數器初始化
2 查詢第i-1個節點,並使工作指標p指向該節點
3 若查詢不成功(p==null),說明位置錯誤,丟擲位置異常,否則
3.1 生成乙個元素值為x的新節點s
3.2 將s插入到p之後
帶頭結點的插入
template
void linklist::insert(int i, t x)
if (!p) throw "位置";
else
}不帶頭結點的插入
insert(int i, t x)
p=first ; j=1; //工作指標p初始化
while (p && jp=p->next; //工作指標p後移
j++;
}if (!p) throw "位置";
else
}刪除
template
t linklist::delete(int i)
if (!p || !p->next) throw "位置"; //結點p不存在或結點p的後繼結點不存在
else
}
線性表基礎
一元多項式的表示 由於每個非零項由設計兩個資訊 係數和指數 1.用結構體陣列表示 2.鍊錶儲存 每個節點中存放係數和指數 定義 由同型別資料元素構成有序序列的線性結構 1.表中元素個數為線性表的長度 2.線性表沒有元素時為空表 3.表起始位置為表頭,表結束位置為表尾 線性表的順序儲存又稱為順序表。它...
線性表基礎(三)
迴圈鍊錶 特點 首尾相接的鍊錶。可以從任一節點出發,訪問鍊錶中的所有節點。判斷迴圈鍊錶中尾結點的特點 q next first template struct node template class cyclelinklist 空表的構造 template cyclelinklist cycleli...
線性表 鍊錶(二)
一,單鏈表的插入 1 單鏈表如何插入乙個新元素呢?在單鏈表中 有序對 圖例 注意 在單鏈表中插入只需要修改指標。若要在第 i 個結點之前插入元素,修改的是是第 i 1 個結點的指標。2 單鏈表的插入元素的 怎麼寫呢?如下 status listinsert linklist l,int i elem...