鍊錶知識梳理

2021-09-22 08:02:53 字數 1469 閱讀 2578

熟悉什麼是鍊錶,鍊錶的分類?

答:鍊錶是一種物理儲存結構上非連續,非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序來實現的。

熟悉鍊錶帶頭結點和不帶頭結點的區別?

答:在結構上:帶頭結點的單鏈表,不管鍊錶是否為空,均含有乙個頭結點,不帶頭結點的單鏈表不含頭結點。

在操作上:帶頭結點的單鏈表的初始化為申請乙個頭結點。無論插入或刪除的位置是第乙個結點還是其他結點,演算法步驟都相同。不帶頭結點的單鏈表,其演算法步驟要分別考慮插入或刪除的位置是第乙個結點還是其他結點。

完成單鏈表的以下基本操作:

typedef int sdatatype;

// 鍊錶的節點

typedef struct slistnode

node, *pnode;

// 鍊錶的結構,給乙個頭指標儲存鍊錶第乙個節點的位址

typedef struct slist

slist, *pslist;

// 鍊錶的初始化

void slistinit(slist* s);

pnewnode->_data=data;

pnewnode->_pnext=null;

return pnewnode;}}

// 在鍊錶s最後乙個節點後插入值為data的節點

void slistpushback(slist* s, sdatatype data);

else

}// 刪除鍊錶s最後乙個節點

void slistpopback(slist* s);

else

free(pcur);

ppre->_pnext=null;}}

// 在鍊錶s第乙個節點前插入值為data的節點

void slistpushfront(slist* s, sdatatype data);

// 刪除鍊錶s的第乙個節點

void slistpopfront(slist* s);

// 在鍊錶的pos位置後插入值為data的節點

void slistinsert(pnode pos, sdatatype data);

// 刪除鍊錶s中pos位置的節點

void slisterase(slist* s, pnode pos);

// 在鍊錶中查詢值為data的節點,找到返回該節點的位址,否則返回null

pnode slistfind(slist* s, sdatatype data);

printf("%d\n",count);

}// 檢測鍊錶是否為空

int slistempty(slist* s);

// 將鍊錶中有效節點清空

void slistclear(slist* s);

phead->_pnext=phead;

phead->_ppre=phead;}}

// 銷毀鍊錶

void slistdestroy(slist* s);

鍊錶的知識

使用快慢指標,快指標每次移動2步,慢指標每次移動1步。當快指標到達鍊錶結尾時,慢指標所在位置即是中點。leetcode 21.合併兩個有序鍊錶 將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3...

知識梳理計畫

知識的學習一般來說有兩個過程,第乙個是摳細節,理解知識,另乙個是將知識點進行總結歸納融入到自己的知識體系中。如果工作學習過程中需要用到該知識點的時候可以很快的提取出來。在這幾年的學習以及研究生活中,我也陸陸續續的鑽研過一些演算法,但是很多東西,都是當時懂了,但是過了一段時間,可能就忘記了,等到需要使...

Hive 知識梳理

1 order by,sort by,distribute by,cluster by 背景表結構 在講解中我們需要貫串乙個 例子,所以需要設計乙個情景,對應 還要有乙個表結構和填充資料。如下 有 3 個字段,分別為 personid 標識某乙個人,company 標識一家公司名稱,money 標識...