タグ

datastructureとlistに関するmanabouのブックマーク (2)

  • linuxカーネルが提供するリストの使い方について - mmitouの日記

    linuxカーネルではlinux/list.hでリストを提供している。 リストはlist_head構造体と、その構造体のオブジェクトを操作するための関数によって構成される。 list_head構造体は以下のように定義されているため、一見しただけでは任意のデータをリストとしてどのように使用すればいいのかわからない。 struct list_head { struct list_head *next, *prev; }; 以下にリストの使い方を説明する。 1. リストの要素となる構造体を宣言する。 linuxカーネルの提供するリストを使う場合には、リストの要素となる構造体を宣言する。 リストの要素となる構造体は、struct list_head型のオブジェクトをメンバーに持つ。 例えば、int型の変数idをリストで扱う場合には以下のように構造体を宣言する。 struct test_data {

    linuxカーネルが提供するリストの使い方について - mmitouの日記
  • Linux KernelのLinked Listの実装が面白い件 - 愛と勇気と缶ビール

    最近、Robert Love先生のを暇な時にダラーと読んでいたりするわけですが、それの中にLinux Kernel内部で使われているLinked Listの実装が書いてあって面白かったので共有。 まず、Linked Listの一個一個のエントリを表すstructを定義します。 struct list_head { struct list_head *next, *prev; }; いやいやいやいや。いかにC力の低い僕でも流石にこれはあきません。騙されませんよ。前後のエントリへのポインタは確かにあるけれども、これにはデータを指すためのポインタがないじゃないの。おじいちゃんまたデータ忘れてきちゃったの?いやあねえ。 おじいちゃんは言った。「それはお前の短見というものじゃ。このLinked Listは以下のコードのようにデータ構造に埋め込んで使うものなんじゃよ。」そしてそれは正しかった。 st

    Linux KernelのLinked Listの実装が面白い件 - 愛と勇気と缶ビール
  • 1