鍊錶是一種資料結構,和陣列同級,鍊錶在進行迴圈遍歷時效率不高,但是在插入和刪除時優勢明顯。
單向鍊錶是一種線性表,是有有結點(node)組成的,邏輯上是線性的,物理儲存上不一定,每個結點只能也只有知道下乙個結點的儲存位置,向外暴露的只有乙個頭結點(head),對鍊錶的所有操作都是直接或者間接地通過頭結點來實現的。
結點有兩部分組成:value,next
單鏈表分為兩種:
(1)不帶頭節點的鍊錶:此種鍊錶的head即儲存第乙個資料,訪問時從head開始。不利於刪除或者新增指定位置資料的操作。
(2)帶頭節點的鍊錶:此種鍊錶儲存資料是從head->next開始的,head中並未儲存有資料,訪問時自然head->next開始,優點就是方便操作。
思路:1、申請新結點
2、新結點.next=head
3、更新第乙個結點為新結點:head= 新結點
1、單鏈表為空時:即可視為頭插,head=node;
2、鍊錶不為空時:
鍊錶不為空時:
1、找到倒數的第二個結點,倒數第二個結點.next.next=null
2、讓第二個結點.next=null
3、釋放最後乙個結點
while(node.next.next!=null)
1、頭插
public static node addhead(node head,int value)
2、尾插
public static node addtail(node head,int value)
node last=getlast(head);
last.next=node;
return head;
}
3、頭刪
public static node deletehead(node head)
return head.next;
}
4、尾刪
public static node delettail(node head)
if(head.next==null)else
return head;
}public static node getlast(node head)
return last;
}public static node getlastlast(node head)
return cur;
}
順序表的實現(頭插,頭刪尾插,尾刪)
順序表 順序表是在計算機記憶體中以陣列的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的儲存單元中。順序表特點 將表中元素乙個接乙個的存入一組連續的儲存單元中,這種儲存結構...
雙端鍊錶的頭插尾插頭刪尾刪
雙端鍊錶的定義我在這裡就不贅述了。直接上圖講 雙端鍊錶的插入,無論是頭插還是尾插,都要記住大話資料結構中的一張圖,強調順序的。這裡的順序比較容易記住,就是自己寫 的時候可能會比較迷糊,我是這樣記得,箭頭從起點到終點的方向為等式的左邊,箭頭的終點為等式的右邊,拿 舉例子,箭頭的方向為node prev...
約瑟夫環問題 鍊錶 刪頭添尾法
有15個人圍成一圈,順序從1到15編號。從第乙個人開始報數,凡報到n的人退出圈子。用c語言寫出程式,輸入n n 1 的值,輸出最後留在圈子裡的人的編號。void main 構建鍊錶 l 把1 15這15個數逐個插入到 l 的尾部 輸入nwhile 鍊錶 l 中元素多於乙個 for i 1 i取 l第...