struct Node{
int value; //表示這個(gè)節(jié)點(diǎn)的值
Node *next; //表示下一個(gè)節(jié)點(diǎn)的指針
}a[200000], *head, *tail;
//定義了20萬個(gè)節(jié)點(diǎn),頭指針和尾指針;
int index = 0;//用來表示當(dāng)前節(jié)點(diǎn)用到了哪里
c++單鏈表的添加void addFirst(int x){//如果頭指針為空,也就是上面的head為空,則調(diào)用這個(gè)方法
a[index].value = x;
head = &a[index]; //因?yàn)閔ead為指針,所以要用地址符號。
tail = &a[index];
index++;
}
void addToHead(int x){ //添加在最前面
a[index].value = x;
a[index].next = head; //當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)修改為頭節(jié)點(diǎn)
head = &a[index]; //頭節(jié)點(diǎn)修改為當(dāng)前節(jié)點(diǎn)
index++;
}
void addToTail(int x){//添加在最后面
a[index].value = x;
tail->next = &a[index]; //尾巴的下一個(gè)為a[index],因?yàn)閠ail是指針,所以要用箭頭
tail = &a[index]; //修改尾巴為當(dāng)前節(jié)點(diǎn);
index++;
}
void add(int x, Node node){ //在node節(jié)點(diǎn)后面添加一個(gè)節(jié)點(diǎn)x
a[index].value = x;
a[index].next = node.next; //先增加一條線,也就是先讓當(dāng)前節(jié)點(diǎn)指向node的下一個(gè)節(jié)點(diǎn)
node.next = &a[index]; //在讓node的下一個(gè)為當(dāng)前添加節(jié)點(diǎn)。
}
c++單鏈表的刪除void delete(Node *node){ //刪除node節(jié)點(diǎn),參數(shù)為Node node 也就是調(diào)用方法時(shí)要用delete(a[i]), 如果為*node,就是delete(&a[i]),此處為*node
if(head == node){ //如果為頭節(jié)點(diǎn),就不用管之前的
head = head->next;
}
else{
//先找到刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn), 可以在結(jié)構(gòu)體里面定義一個(gè)pre指針,這樣可以O(shè)(1)刪除
//接下來的方法是遍歷方法找到該節(jié)點(diǎn)的前一個(gè),復(fù)雜度為O(n);
Node *h = head;
while(h != null && h ->next != node){
h = h ->next
}
h->next = h->next->next;//直接讓當(dāng)前節(jié)點(diǎn)的下一個(gè),為當(dāng)前節(jié)點(diǎn)下一個(gè)的下一個(gè);
}
}
c++循環(huán)單鏈表循環(huán)單鏈表就是讓尾指針指向頭指針,每次執(zhí)行玩操作后,讓tail的下一個(gè)為head
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國際域名空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、海城網(wǎng)站維護(hù)、網(wǎng)站推廣。循環(huán)單鏈表的好處是從任何一個(gè)節(jié)點(diǎn)出發(fā)都可以遍歷整個(gè)鏈表
c++雙鏈表c++雙鏈表就是可以快速的找到當(dāng)前節(jié)點(diǎn)的前一個(gè)元素,定義結(jié)構(gòu)體時(shí),添加一個(gè)pre指針
添加或者刪除時(shí)要注意先連線,在斷線
list為stl中的鏈表,可以參考文檔來學(xué)習(xí)
如果想看雙鏈表具體的執(zhí)行,可以私信我,我來更新
java單鏈表的定義class Node{//如果是做題用,可以把這個(gè)類定義為靜態(tài)類
public int value;
public Node next;
public Node(int value){this.value = value;
}
}
//定義頭和尾
Node head = null;
Node tail = null;
java單鏈表的添加public void addFirst(int x){//如果頭為空,說明當(dāng)前鏈表為空,也就是第一次添加數(shù)據(jù)到鏈表
Node cur = new Node(x); //定義當(dāng)前節(jié)點(diǎn)
head = cur;
tail = cur; //添加完后,頭和尾都是這個(gè)節(jié)點(diǎn)
}
public void addTail(int x){//添加到最后一個(gè)
Node cur = new Node(x);
Tail.next = cur;
Tail = cur;
}
public void addHead(int x){Node cur = new Node(x);
cur.next = head;
head = cur;
}
public void add(int x, Node node){Node cur = new Node(x);
cur.next = node.next;
node.next = cur;
}
java單鏈表的刪除public deleteHead(){//刪除第一個(gè)
head = head.next;
}
public delete(Node node){//同c++,得先找到它的上一個(gè)節(jié)點(diǎn), 如果定義的不是雙鏈表,則這個(gè)操作為O(n);
Node h = head;
while(h.next != node){h = h.next;
}
h.next = h.next.next; //也可為h.next = node.next;
}
java循環(huán)單鏈表每次執(zhí)行完添加或者操作之后,讓尾指針的next = 頭指針, tail.next = head
java雙鏈表雙鏈表的好處就是可以更快的找到當(dāng)前節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn),表示的話多了一個(gè)pre指針(java可能不叫指針)
添加或者刪除時(shí)要注意先連線,在斷線
LinkedList為Java jdk中提供的鏈表,可以參考文檔來學(xué)習(xí)
如果想看雙鏈表具體的執(zhí)行,可以私信我,我來更新
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁題目:java和c++的鏈表操作-創(chuàng)新互聯(lián)
文章源于:http://www.rwnh.cn/article6/cseeig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、搜索引擎優(yōu)化、網(wǎng)站制作、面包屑導(dǎo)航、動(dòng)態(tài)網(wǎng)站、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容