資料結構之單鏈表 c

2021-08-11 15:27:07 字數 1898 閱讀 8658

templatestruct node

node(t x,node *next=null)

};

templateclass linklist 

;

**

(1) 預設建構函式

templatelinklist::linklist()    //建構函式1

(2)有參建構函式

templatelinklist::linklist(t a,int n)    //建構函式2

}

(3)析構函式

templatelinklist::~linklist()   //清空操作,將各元素結點空間釋放,單鏈表為空表

head->link =null; //單鏈表為空

}

(4)單鏈表的反轉

templatenodelinklist::*invert(node *x)

return q;

}

(5)求單鏈表的長度

templateint linklist::listlength()

return num;

}

(6)按位查詢

templatet linklist::get(int pos)

if(!p||j>pos)

(7)按值查詢

templateint linklist::locate(t item)

if(p) return j;

else return 0;

}

(8) 插入操作

演算法描述:

① 若i<1,則插入失敗,結束;

② 掃瞄單鏈表,尋找單鏈表中第i-1個元素結點的指標p;

③ 若p存在(p非空)則在其後插入,操作成功,否則不能插入。

templatebool linklist::insert(int i,const t&item)

if(!p) //插入位置不合法

return false;

s=new node(item,p->link);

s->data=item;

s->link= p->link;//確定待插入結點(s所指結點)的link指標(s->link)指向

p->link=s; //修改鍊錶中的指標(p->link)指向

return true;

}

(9) 刪除操作

a) 演算法步驟:(刪除單鏈表中的第pos個元素)

① 若pos<1,則刪除失敗,結束;

② 在單鏈表中找第pos -1個元素結點的指標p;

③ 若p和p->link均非空,則刪除p->link所指結點,否則刪除失敗。

templatebool linklist::remove(int i,t&x) //刪除單鏈表的第i個元素,並置入x

if(!p->link) //刪除位置不合法,pos大於表長

return false;

current=p->link; // current指向被刪除結點

p->link=current->link; //修改鍊錶指標

x= current->data;

delete current;

return true;

}

(10)列印整個鍊錶

templatevoid linklist::printlinklist()

cout<}

C 資料結構之單鏈表

建立鍊錶 1.頭插法 新結點的指標域儲存頭結點的指標域的值,頭結點的指標值修改為新結點的位址,即s next head next,head next s 順序不可更改 2.尾插法 新結點作為鍊錶的尾結點,因此新結點的指標值為null,即s next null,上一結點的指標指向新結點,即p next...

C 資料結構之單鏈表

線性表有兩種結構,順序儲存結構和順序儲存結構,順序儲存結構的線性表理解起來很簡單。對於順序儲存,我們首先能想到的陣列,而順序儲存的線性表就是將結構體 陣列的這一種組合來實現。例如 define maxsize 20 typedef int elemtype typedef struct sqlist...

資料結構之單鏈表

date 08 07 06 descript 單鏈表的實現與應用 public class linlist public node gethead 定位函式 public void index int i throws exception if i 1 current head.next int j...