超多注釋助你手撕指標與鍊錶

2021-10-22 08:05:54 字數 3414 閱讀 6885

結構體也叫做更複雜的結構型別,只要型別能夠做的事情,結構體也能做

struct person

struct person yu;

struct person *p;

p =&yu;

// 匿名結構體只能用一次

struct node

// 結構體內存占用圖如下

使用共用體實現ip轉整數的功能

#include

union ipip;

unsigned

int num;};

// 判定電腦是大端機還是小端機

intis_little()

//小端機會輸出0

intmain()

;int arr[4]

;// 判斷是不是小端機

printf

("%d\n"

,is_little()

);while(~

scanf

("%s"

,str)

)return0;

}

##指標和位址

#include

struct data

;// a[2]是用結構體定義的陣列

#define p(func)

intmain()

##鍊錶

鍊錶的應用場景1:leetcode #141 環狀鍊錶

class

solution

while

(p != q && q && q-

>next)

;// 用下面兩句話會超時

// 不可以用兩個if語句一起寫return 否則會出現編譯不過的情況if(

(q==

nullptr)||

(q->next ==

nullptr))

return0;

else

return1;

// 或者可以返回下面的這句話,下面這句話意思是,如果q和q->next都不是空位址,就直接返回1

// return q && q->next;}}

;

leetcode #142 環狀鍊錶ii

class

solution

while

(p != q && q && q-

>next)

;// 如果都是空了,就返回空節點,說明沒有環

if(q ==

nullptr

|| q-

>next ==

nullptr

)return

nullptr

; p = head;

// 相遇在環的起始位置,q還需要再走a步。

while

(p != q) p = p-

>next, q = q-

>next;

return q;}}

;

leetcode #202 快樂數

從收斂性性質可以知道,這個快樂書是有環的。那麼只要找到它能不能到1,或者說

class

solution

return z;

}bool

(int n)

while

(p != q && q !=1)

;// 如果出現迴圈又沒有1,就返回false了

return q ==1;}};

leetcode #206 翻轉鍊錶
// 遞迴翻轉

class solution

};

class

solution

// p= p->next);

}return pre;}}

;

leetcode #92 反轉鍊錶ii
// 先找到要翻轉的頭一位,之後呼叫翻轉頭n個節點的函式,翻轉之後再讓一節點指標指向被翻轉之後的鍊錶的頭結點

class

solution

listnode *

reversebetween

(listnode *head,

int m,

int n)

};

leetcode #25 k個一組翻轉鍊錶

class

solution

// 這個是定義這個函式?

listnode *

reversen

(listnode *head,

int n)

listnode *

reversekgroup

(listnode *head,

int k)

return ret.next;}}

;

leetcode #61 旋轉鍊錶

將頭指標向右移動k位,之後,把k-1位的那個節點斷開,變成空。這樣就起到右移節點的目的了。

class

solution

};

leetcode #24旋轉鍊錶
class

solution

listnode* newhead = head-

>next;

// 調換的是newhead後面的那兩個節點

head-

>next =

(newhead-

>next)

; newhead-

>next = head;

return newhead;}}

;

leetcode #19 刪除鍊錶的倒數第n個節點

class

solution

};

leetcode #83 刪除排序鍊錶中的重複節點
class

solution

else

}return head;}}

;

leetcode #82 刪除排序鍊錶中的重複節點ii
class

solution

else

}return ret.next;}}

;

webpack配置超詳細注釋解讀

const htmlwebpackplugin require html webpack plugin const cleanwebpackplugin require clean webpack plugin 需要解構,正確方式如下 const require clean webpack plug...

C 專案(有注釋超詳細)

定義函式或者類盡量放到標頭檔案中,這樣不容易出現重複命名和 冗雜的問題。pragma once include using namespace std include worker.h class manager public worker 例如我們需要乙個worker類,最好不要在乙個檔案中先宣告...

C 歸併排序(注釋超詳細)

c 歸併排序的實現 1 mergesort.h 初始版本,公升序排序 時間複雜度 o nlbn 將n個待排序記錄歸併次數為lbn,一趟歸併o n 空間複雜度 o n 遞迴棧最大深度為 lbn 1 而輔助陣列大小為n 穩定 無論最好還是最壞情況時間複雜度都是o nlbn ifndef mergesor...