資料結構鍊錶
下面我們來寫乙個單向的簡單鍊錶,首先我們要宣告乙個頭節點是為了儲存頭節點資訊,同理宣告乙個當前節點儲存當前節點的資訊,再然後宣告乙個節點型別的結構體,裡面有兩個變數,乙個是節點的儲存資料,資料型別為字串,另乙個是下乙個節點的位址資料型別節點的指標型別。(package linknodes的內容寫在linknodes資料夾下的node.go檔案中)
package linknodes
import "fmt"
//宣告全域性變數,儲存頭節點
var head *node
var curr *node //當前節點
//宣告節點型別
type node struct
接下來我們首先建立乙個頭節點,需要注意的是在設定完資料域和位址域後,要把頭節點資訊賦予前面宣告的全域性變數head,這個head變數在後面很多方法裡我們都需要用到。
//建立頭節點
func createheadnode(data string) *node
接下來我們來建立多種操作鍊錶的方法:
//新增新節點
func addnode(data string) *node
//遍歷鍊錶
func shownodes() else }}
//計算節點的個數
func nodecnt() int else
}return cnt
}//插入節點
func insertnodebyindex(index int, data string) *node else if index > nodecnt()-1 else
var newnode *node = new(node)
newnode.data = data
newnode.nextnode = n.nextnode
n.nextnode = newnode
}return nil
}//刪除節點
func deletenodebyindex(index int) else
node.nextnode = node.nextnode.nextnode}}
//修改指定下標的節點內容
func updatenodebyindex(index int, data string) else
node.data = data
}}
接下來我們在主函式中使用這些方法:
package main
import (
"myhashmap_簡單鍊錶/linknodes"
"fmt"
)func main()
輸出內容為:
hello world!
頭節點第一節點
第二節點
第三節點
第四節點
共有 5 個節點
--------------------------------
頭節點第一節點
abc第二節點
第三節點
第四節點
--------------------------------
頭節點第一節點
第二節點
第三節點
第四節點
--------------------------------
頭節點第一節點
第二節點
abc第四節點
密碼學 密碼學基礎
密碼學是研究編制密碼和破譯密碼的技術科學。密碼學的安全目標至少包含三個方面 保密性 完整性 可用性。完整性 資源只有授權方以授權的方式進行修改,所有資源沒有授權則不能修改。可用性 資源只有在適當的時候被授權方訪問,並按需求使用。密碼系統由5部分組成 1 明文空間m 全體明文的集合 2 密文空間c 全...
密碼學 柵欄密碼
使用的時候通過設定解密的偏移量不一樣的話,會得出不同的解碼內容 一直設定不同的偏移位數 直到找到帶有cyberpeace 開頭的解碼內容 偏移量也就是分組的數字長度 一般就是flag了 有時候它也會全部的解碼都沒有flag的標誌,這時候一定仔細看題目給出的條件 還有的情況就是在題目裡面它會提示給你數...
密碼學 密碼學中幾種攻擊模式
本科畢業設計做完之後,一直覺得自己需要系統來學習一下密碼學,密碼學是乙個古老的學科,前人已經研究了太多太多,而伴隨著量子計算的逐漸發展,之前制定出來的密碼演算法都面臨著被淘汰的危險。今天記錄一下根據密碼分析者知道資訊的多少,密碼學中分為常見的幾種攻擊模式,以及它們主要用於什麼場合。在介紹攻擊模式之前...