線性表基礎(二)

2021-09-29 02:27:07 字數 2096 閱讀 5292

單鏈表:

通過指標把它的一串儲存結點鏈結成乙個鏈

儲存結點由兩部分組成: 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...