1)有乙個頭(表頭),有乙個尾(表尾)
2)表頭與表尾之間的元素有且只有乙個前驅元素,有且只有乙個後繼元素
順序表和煉表
1)順序表是一邊連續的儲存空間
鍊錶是一片雜湊的儲存空間
2)順序表只要知道表頭就可以快速查詢到其他任何位置的元素。
因為順序表是連續排列的,比如我們知道了1號元素的位置,要想查6號元素的位置,只需將1號元素的位置加5個距離就能立刻知道6號元素的位置。而鍊錶則不行,在鍊錶中,想要知道某個元素的位置,必須通過該元素的上乙個元素的指標去查。
3)鍊錶利於資料的插入和刪除操作,而順序表則不利於插入和刪除操作。
在順序表中我們若刪除乙個元素,則需將該元素後面的所有元依此前移一位,而鍊錶只需將插入位置的前一位元素的指標指向自己,將自己的指標指向插入位置的後一位元素即可。
4)因為鍊錶中會有一部分空間用來儲存指標,所以空間利用率會比順序表稍差一些。
package mystudy.datastructure.day2;
/***
* @description 節點類
* @author shenrenfeng
* @date 2023年11月4日 上午11:14:07**/
public class node
public int getdata()
public void setdata(int data)
public node getnext()
public void setnext(node next)
}
單鏈表至少包括乙個屬性:頭節點
package mystudy.datastructure.day2;
/***
* @description 單鏈表
* @author shenrenfeng
* @date 2023年11月4日 上午11:16:23**/
public class singlylinkedlist else }
/*** 刪除節點(刪除頭節點)
* @return 返回被刪除的頭節點
*/public node delete()
/*** 展示鍊錶資料
*/public void showlist()
} public node getfirstnode()
public void setfirstnode(node firstnode)
}
package mystudy.datastructure.day2;
/***
* @description 測試單鏈表
* @author shenrenfeng
* @date 2023年11月4日 上午11:39:50**/
public class test
}
測試結果:
結果說明:
因為乙個插入的作為頭節點,所以9在最前面,而後面每次是從頭節點之後插入的,類似倒序,所以插入順序雖然為9 2 4 5 8 輸出結果卻為9 5 8 4 2
刪除是直接將頭節點刪除
資料結構學習筆記 單鏈表
陣列優勢在於快速定位元素,對於讀操作多,寫操作少的場景,陣列更合適 鍊錶優勢在於快速的插入和刪除操作,如果頻繁的在尾部刪除和插入元素,用鍊錶更好 package com.cc.node public class nodedemo1 private node head private node las...
資料結構學習筆記 單鏈表
準備知識在另一篇部落格 單鏈表預備知識 建立單鏈表 頭插法 每次都是從頭結點插入乙個元素的方法,所以它是倒序的。struct lnode 建立結點結構體,由資料域和指標域組成 linknode void createlistf linknode l,elemtype a,int n 從陣列a中讀取資...
資料結構學習筆記3 單鏈表
1.相對於順序表的線性儲存,順序表的鏈式儲存 單鏈表為例 最突出的優點 對元素的插入與刪除非常快 順序表的線性儲存插入和刪除需要移動大量的元素,操作速度緩慢 而獲取元素的速度相對而言比較快 單鏈表剛好和他相反,插入和刪除很快,獲取元素速度比不上線性表 2.單鏈表的形式 3.單鏈表的插入和刪除 4.除...