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...