單鏈表的應用

2021-07-22 17:01:38 字數 866 閱讀 4036

就地逆置——頭插法

有乙個線性表採用帶頭節點的單鏈表儲存,採用就地演算法將其就地逆置。

思路:使用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。...