就地逆置——頭插法
有乙個線性表採用帶頭節點的單鏈表儲存,採用就地演算法將其就地逆置。
思路:使用p指標掃瞄原單鏈表,現將頭節點的next置為空,然後將其他節點採用頭插法插入。
//就地逆置單鏈表,「就地」的意思是輔助空間為o(1)
public void reverse(linklist l)
}
將乙個線性表拆成兩個線性表——尾插法
思路:原鍊錶lc的第乙個節點作為la的頭節點,第二個節點作為lb的頭節點。分別兩個鍊錶的尾指標ra,rb,將lc中的奇數序號的節點插入la,偶數序號的節點插入lb
public void spilt(linklist lc,linklist la,linklist lb)
else
p=q;
i++;
} ra.next=null;
rb.next=null;
la.showlist();
lb.showlist();
}
對單鏈表l進行調整,使得所有偶數序號項排在基數序號項之前
思路:通過掃瞄l的所有節點,將其拆分成兩個單鏈表la和lb,乙個用來存放l偶數序號的節點,另乙個用來存放l奇數序號的節點,最後將la和lb連線起來。
//將所有偶數項排到奇數項之前
public void sort(linklist l)
else
p=q;
i++;
} ra.next=null;
rb.next=la.head;
lb.showlist();
}
單鏈表的應用
前言 上一節通過學習單鏈表,知道單鏈表的是隨機訪問結構,要獲取元素的元素必須從頭指標出發順序查詢,因此也稱為順序訪問的訪問結構,使用單鏈表可以克服陣列鍊錶需要預先知道資料大小的缺點,實現靈活的動態記憶體管理。這裡我們用c語言結合單鏈表來實現乙個可以實現增刪改查的學生管理系統。include incl...
單鏈表的應用舉例
例2.5 已知單鏈表h,寫一演算法將其倒置。即實現如圖2.22的操作。a 為倒置前,b 為倒置後。演算法思路 依次取原鍊錶中的每個結點,將其作為第乙個結點插入到新鍊錶中去,指標p用來指向當前結點,p為空時結束。演算法如下 void reverse linklist h 演算法2.15。該演算法只是對...
單鏈表的應用例項
1 有乙個帶頭結點的單鏈表l a1,b1,a2,b2,a3,b3 an,bn 設計乙個演算法將其拆分為兩個帶頭結點的單鏈表l1和l2,其中l1 a1,a2,a3,a4 an l2 bn,b3,b2,b1 要求l1使用l的頭節點。解 利用原單鏈表l中的所有結點通過改變指標域重組成兩個單鏈表l1和l2。...