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