單向鏈表的反轉
// 1 ->2 ->3 ->null
// 3 ->2 ->1 ->null
public static SingleNode reverse(SingleNode head) {
SingleNode next = null;
SingleNode pre = null;
while (head != null) {
// 使用next變量 將下一個節點保存下來
next = head.getNext();
// 然后將 head的指針指向 前一個,因為要做反轉操作
head.setNext(pre);
// 在開始下一次循環的時候 把當前的這個節點保存下來
pre = head;
// 然后將指針 移動到下一個節點
head = next;
}
// 最后因為head已經移動到null的位置,所以要將head的前一個節點作為結果返回,然后在用變量接收這節點
return pre;
}
雙向鏈表的反轉
public static DoubleNode reverse(DoubleNode head) {
DoubleNode next = null;
DoubleNode pre = null;
while (head != null) {
// 使用變量保留下一個節點
next = head.getNext();
// 后指針指向前
head.setNext(pre);
// 前指針指向后
head.setPre(next);
// 然后把當前節點進行記錄 放到前面
pre = head;
// 然后把指針向后移動
head = next;
}
return pre;
}
在單鏈表當中刪除給定的值
public static SingleNode deleteNum(SingleNode head, String value) {
while (head != null) {
// 找第一個不符合的節點來作為頭
if (!head.getValue().equals(value)) {
break;
}
head = head.getNext();
}
SingleNode pre = head;
SingleNode cur = head;
while (cur != null) {
if (cur.getValue().equals(value)) {
// 如果相同,代表這個節點需要被刪除
pre.setNext(cur.getNext());
}else {
pre = cur;
}
cur = cur.getNext();
}
return head;
}
public static SingleNode generateChain() {
SingleNode node1 = new SingleNode("1");
SingleNode node2 = new SingleNode("2");
SingleNode node3 = new SingleNode("1");
SingleNode node4 = new SingleNode("3");
node1.setNext(node2);
node2.setNext(node3);
node3.setNext(node4);
node4.setNext(null);
return node1;
}
public static void main(String[] args) {
SingleNode node = deleteNum(generateChain(), "1");
while (node != null) {
System.out.print(node.getValue() + ",");
node = node.getNext();
}
}
棧和隊列棧:先入后出 類似彈夾
隊列:先入先出 類似排隊
哈希表和有序表在java當中 Hashmap 就是哈希表,并且他的所有增刪改查所有操作時間復雜度都為O1
在java當中TreeMap 就是有序表,這個有序表擁有哈希表全部的功能,并且,可以根據
key進行排序
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
當前標題:03算法與數據結構-創新互聯
地址分享:http://m.kartarina.com/article0/cdcsoo.html
成都網站建設公司_創新互聯,為您提供網站制作、ChatGPT、網站設計、品牌網站建設、域名注冊、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯